我在我們的項目中使用go-saml庫來啟用 SSO,其中服務提供商將是 Salesforce,身份提供商將是 Golang 代碼。Golang 代碼將首先驗證用戶,然后創建一個 SAML 響應以允許用戶登錄 Salesforce。我是 Golang 的新手,并遵循創建此庫的 SAML 響應(如果充當 IdP)。因此,到目前為止,我能夠使用它創建一個 SAML 響應,但在根據要求對其進行自定義時面臨一些挑戰。我面臨的第一個挑戰是在條件塊中添加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 響應中手動添加上述塊后,我在使用 Salesforce SAML 驗證器驗證 SAML 響應時也會收到以下錯誤驗證簽名...響應是否已簽名?true斷言是否已簽名?false響應簽名中的引用有效keyinfo 中是否提供了正確的證書?真的簽名或證書問題響應中的簽名無效我已經生成了一個公鑰(自簽名 .pem 證書)和一個私鑰。之后,我已將公鑰上傳到 Salesforce,并在代碼內部使用私鑰和公鑰來生成 SAML 響應。我不知道為什么會收到簽名無效錯誤。如果您對我有任何建議,請告訴我。如果您想查看我的 Golang 代碼 - https://play.golang.org/p/U9dXZblTHG1
1 回答
HUWWW
TA貢獻1874條經驗 獲得超12個贊
可以通過提供的功能添加受眾:
authnResponse := saml.NewSignedResponse()
authnResponse.AddAudienceRestriction("https://saml.salesforce.com")
身份驗證上下文可以通過另一個函數添加:
authnContext := "urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified"
sessionIndex := "session_1"
authnResponse.AddAuthnStatement(authnContext,sessionIndex)
作為建議,請嘗試使用更成熟、成熟的庫(例如 OpenSAML 或 simpleSAMLphp)來生成 SAML 響應。如果這有效但 go-saml 無效,那么您可以繼續下一步。另一方面,如果您通過另一種方法生成的斷言也失敗了,那么這可能是您使用密鑰或斷言內容而不是庫所做的任何問題。
- 1 回答
- 0 關注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消
