我正在实现一个将在面向公众的网站上运行的 SAML2 服务提供程序。登录功能是公开可用的,因此任何人都可以从我的站点获取 AuthnRequest。
当我确实收到来自 Idp 的响应时,我是否必须验证 InResponseTo 字段以确保响应是针对我已发出的 AuthnRequest 还是可以忽略它?
我不明白当我已经在验证响应的签名并通过仅允许每个断言 id 在断言的有效时间内使用一次(由状况)。
我正在实现一个将在面向公众的网站上运行的 SAML2 服务提供程序。登录功能是公开可用的,因此任何人都可以从我的站点获取 AuthnRequest。
当我确实收到来自 Idp 的响应时,我是否必须验证 InResponseTo 字段以确保响应是针对我已发出的 AuthnRequest 还是可以忽略它?
我不明白当我已经在验证响应的签名并通过仅允许每个断言 id 在断言的有效时间内使用一次(由状况)。
OASIS 安全断言标记语言 (SAML) V2.0第 6.1.3 节消息插入的安全和隐私注意事项对此进行了说明。
它主要是一种阻止插入到通信中的伪造请求的方法。作为签名和/或 SSL 的补充。它不是解决一个单独的安全问题,而是一种深度防御。
我的解释是检查InResponseTo
比验证签名更便宜,并且是一种更快的方法来丢弃无效消息以避免 DOS 攻击。
是的,根据 SAML 规范,这必须经过验证。
我不是 100% 确定原因或这个。但只是大声思考。通过时间和签名的约束,您仍然可以在有效时间内重播消息。