2015-03-13 116 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