我知道很多服务提供商使用中继状态来跟踪SP发起SSO时访问的资源,因此SP可以在SAML断言消耗后重定向到它。
但是,我正在查看SAML响应的目标属性,看起来它是专为此案例设计的。
我错过了什么吗?为什么服务提供商以这种方式使用中继状态(使用目的地)?
答案 0 :(得分:5)
正如您所说,RelayState是SP成功完成SAML身份验证过程后重定向用户的位置。
但是签署邮件时需要Destination属性(与SAML的绑定/传输相关)。
从3.4.5.2 SAML Bindings spec的安全注意事项,
如果消息已签名,则根目录中的Destination XML属性 协议消息的SAML元素必须包含到的URL 发件人已指示用户代理传递邮件。该 收件人必须验证该值是否与位置匹配 消息已经收到。
这主要是为了避免某人检索到IdP在中间发送的SAMLResponse,并将该消息发送给未创建SAMLResponse并发送给的其他SP方。
如果目标包含在SAMLResponse中(也有签名),则预期的SP(接收方)可以验证目标属性值是否与收到SAMLResponse的目的地/位置匹配。也许预期的SP知道目的地/位置URL,他们可以验证这两个值是否相等。如果它们相同,则由IdP将SAMLResponse发送到预期的SP,并且SP接受它,否则SP必须拒绝SAMLResponse。