SAML绑定规范在重定向和POST绑定的安全注意事项中包含以下内容:
如果邮件已签名,则根目录中的“目标XML”属性 协议消息的SAML元素必须包含URL 发件人已指示用户代理传递邮件。该 收件人必须验证该值是否与位置匹配 消息已经收到。
我试图了解邮件签名时为何需要目的地。
SAML Core说:
这有助于防止恶意转发请求 非预期的收件人,某些协议所要求的保护 绑定。
我完全明白了,但是当消息签名时,必须采取什么理由呢?
提前致谢。
答案 0 :(得分:1)
如果消息未签名,任何人都可以修改响应,而不会被注意到。所以没有必要让它成为必须的。然而,当消息被签名时,Destination属性不能被改变,因此变得有价值,因此,使它成为必须的要求是有意义的。
答案 1 :(得分:1)
原因是确保没有人(攻击者)可以获取有效的SAML消息并将其发送到另一个系统,而该系统的消息最初并不是这样。 SAML包含多个检查以防止这些类型的攻击(Audience元素就是其中之一),而对Destination的强制检查则是另一个。
签名本身不提供此保护,签名仅保证消息是由某人创建的,并且自创建以来未对其进行更改,但它们不包含有关该消息实际用于哪个端点的任何信息 - 这就是目的地到位的地方。
目的地检查是“必须的”,因为SAML的作者认为类似的攻击是危险的,足以保证作为协议的一部分的先发制人保护。