从http://en.wikipedia.org/wiki/SAML_2.0读取,我试图了解保证在流程的第5步中发送的SAMLResponse的真实性的机制。
我理解它的方式,SAML的设计使服务提供商可以信任身份提供商进行身份验证,而无需直接联系它。然而,这依赖于用户代理将来自身份提供者的响应重新发送回服务提供者。在我看来,像一个受到妥协的代理可能会返回一个假的验证响应。服务提供商如何在不尝试联系身份提供商的情况下验证这一点?
感谢您的时间。
答案 0 :(得分:11)
好问题!
这类似于银行在支票上验证签名的方式;他们会将个人文件签名的几次迭代与兑现支票的迭代进行比较 - 只要这些匹配,他们就可以相信支票是由目标个人签署的。
与SAML的工作方式相同,但准确度必须为100% - SAML有效负载使用身份提供商和服务提供商共享和信任的证书进行签名。
为了确保响应的真实性,您需要确保其签名的密钥与您为该特定信任存储的密钥匹配,如果不匹配,则不应接受响应为有效
这是基本摘要,但是,如果你想要更多详细信息,我在做SSO \ SAML时已经标记了this question,我发现它有助于解释它的工作方式。