SAML 2.0中的目标和RelayState有什么区别?

3

我知道很多服务提供商使用relay state来跟踪在SP启动SSO时访问的资源,以便SP可以在SAML断言消耗后重定向到它。

然而,我正在查看SAML响应的目标属性,看起来它是专门为此情况设计的。

我错过了什么吗?为什么服务提供商要以这种方式使用relay state(而不是使用目标)?

1个回答

12

如您所说,RelayState 是在成功的 SAML 认证过程完成后,SP 重定向用户到的位置。

但是,在消息签名时需要 Destination 属性(与 SAML 的 Binding/Transport 相关)。

来自SAML 绑定规范文档3.4.5.2 安全考虑节:

如果消息已签名,则协议消息根 SAML 元素中的 Destination XML 属性必须包含发件人指示用户代理程序传递消息的 URL。 然后,接收方必须验证该值是否与接收到消息的位置相匹配。

这主要是为了避免某人在中间检索 IdP 发送的 SAMLResponse 并将该消息发送给其他未创建和发送 SAMLResponse 的 SP 方。

如果 SAMLResponse 中包含了 Destination(它也被签名了),则预期的 SP(接收者)可以验证 Destination 属性值是否与接收到 SAMLResponse 的目标/位置匹配。 可能预期的 SP 知道目标/位置 URL,并且他们可以验证这两个值是否相等。 如果它们相等,则 IdP 将 SAMLResponse 发送给预期的 SP,并且 SP 接受它,否则 SP 必须拒绝该 SAMLResponse。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接