我在我們的項(xiàng)目中使用go-saml庫來啟用 SSO,其中服務(wù)提供商將是 Salesforce,身份提供商將是 Golang 代碼。Golang 代碼將首先驗(yàn)證用戶,然后創(chuàng)建一個(gè) SAML 響應(yīng)以允許用戶登錄 Salesforce。我是 Golang 的新手,并遵循創(chuàng)建此庫的 SAML 響應(yīng)(如果充當(dāng) IdP)。因此,到目前為止,我能夠使用它創(chuàng)建一個(gè) SAML 響應(yīng),但在根據(jù)要求對其進(jìn)行自定義時(shí)面臨一些挑戰(zhàn)。我面臨的第一個(gè)挑戰(zhàn)是在條件塊中添加AudienceRestriction ,如下所示:-<saml:Conditions NotBefore="2020-03-15T16:33:16.23103491Z" NotOnOrAfter="2020-03-15T16:43:16.23104017Z"> <saml:AudienceRestriction> <saml:Audience>https://saml.salesforce.com</saml:Audience> </saml:AudienceRestriction> </saml:Conditions>我試圖在代碼中添加它,但似乎AudienceRestrictions未在條件對象中定義。authnResponse := saml.NewSignedResponse() authnResponse.Conditions.AudienceRestrictions = "https://saml.salesforce.com"我沒有找到任何方法在 Salesforce 必須的條件塊中添加上述塊。請建議我這樣做的一些方法。我還必須在條件塊下方添加AuthnStatement,如下所示:-<saml:AuthnStatement AuthnInstant="2020-03-01T11:28:31.396Z"> <saml:AuthnContext> <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef> </saml:AuthnContext> </saml:AuthnStatement>即使在 SAML 響應(yīng)中手動(dòng)添加上述塊后,我在使用 Salesforce SAML 驗(yàn)證器驗(yàn)證 SAML 響應(yīng)時(shí)也會(huì)收到以下錯(cuò)誤驗(yàn)證簽名...響應(yīng)是否已簽名?true斷言是否已簽名?false響應(yīng)簽名中的引用有效keyinfo 中是否提供了正確的證書?真的簽名或證書問題響應(yīng)中的簽名無效我已經(jīng)生成了一個(gè)公鑰(自簽名 .pem 證書)和一個(gè)私鑰。之后,我已將公鑰上傳到 Salesforce,并在代碼內(nèi)部使用私鑰和公鑰來生成 SAML 響應(yīng)。我不知道為什么會(huì)收到簽名無效錯(cuò)誤。如果您對我有任何建議,請告訴我。如果您想查看我的 Golang 代碼 - https://play.golang.org/p/U9dXZblTHG1
1 回答

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
可以通過提供的功能添加受眾:
authnResponse := saml.NewSignedResponse()
authnResponse.AddAudienceRestriction("https://saml.salesforce.com")
身份驗(yàn)證上下文可以通過另一個(gè)函數(shù)添加:
authnContext := "urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified"
sessionIndex := "session_1"
authnResponse.AddAuthnStatement(authnContext,sessionIndex)
作為建議,請嘗試使用更成熟、成熟的庫(例如 OpenSAML 或 simpleSAMLphp)來生成 SAML 響應(yīng)。如果這有效但 go-saml 無效,那么您可以繼續(xù)下一步。另一方面,如果您通過另一種方法生成的斷言也失敗了,那么這可能是您使用密鑰或斷言內(nèi)容而不是庫所做的任何問題。
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)
0/150
提交
取消