2015-03-13 110 views
3

http://en.wikipedia.org/wiki/SAML_2.0閱讀,我試圖瞭解保證在過程的第5步中發送的SAMLResponse的真實性的機制。爲什麼SAML服務提供商應該信任SAML響應?

我的理解是,SAML旨在讓服務提供商可以信任身份提供商進行身份驗證,而無需直接聯繫它。然而,這依賴於用戶代理將來自身份提供商的響應重新發送回服務提供商。在我看來,像受到威脅的代理可能會返回一個虛假的已驗證響應。服務提供商如何在不嘗試聯繫身份提供商的情況下對此進行驗證?

謝謝你的時間。

回答

3

好問題!

這與銀行驗證支票簽名的方式類似,他們會比較個人簽名中的幾次迭代與兌現支票的迭代次數 - 只要這些次數匹配,他們就可以相信該支票是由目標個人簽署的。

它與SAML的工作方式相同,但準確度必須達到100% - SAML有效負載使用身份提供商和服務提供商共享和信任的證書進行簽名。

爲了確保回覆的真實性,您需要確保簽名的密鑰與您爲特定信任存儲的密鑰匹配,如果不是,則不應接受回覆爲有效。這是基本總結,但是,如果您想了解更多詳細信息,我可以從我在做SSO \ SAML時收藏的書籤中找到this question,並且我發現它在解釋這種工作方式時很有用。

+0

所以你說的是,在發出SAML請求之前,必須在兩個提供者之間共享證書?或者服務提供商應該從身份提供商的網站獲取證書? – 2015-03-13 20:27:28

+2

通常,SP和IDP的證書將作爲SAML元數據的一部分進行交換。 http://en.wikipedia.org/wiki/SAML_2.0#SAML_2.0_Metadata – 2015-03-13 21:06:11