签名消息上的SAML2目标验证背后的理性

时间:2014-07-23 02:49:21

标签: saml-2.0

SAML绑定规范在重定向和POST绑定的安全注意事项中包含以下内容:

  

如果邮件已签名,则根目录中的“目标XML”属性   协议消息的SAML元素必须包含URL   发件人已指示用户代理传递邮件。该   收件人必须验证该值是否与位置匹配   消息已经收到。

我试图了解邮件签名时为何需要目的地。

SAML Core说:

  

这有助于防止恶意转发请求   非预期的收件人,某些协议所要求的保护   绑定。

我完全明白了,但是当消息签名时,必须采取什么理由呢?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果消息签名,任何人都可以修改响应,而不会被注意到。所以没有必要让它成为必须的。然而,当消息签名时,Destination属性不能被改变,因此变得有价值,因此,使它成为必须的要求是有意义的。

答案 1 :(得分:1)

原因是确保没有人(攻击者)可以获取有效的SAML消息并将其发送到另一个系统,而该系统的消息最初并不是这样。 SAML包含多个检查以防止这些类型的攻击(Audience元素就是其中之一),而对Destination的强制检查则是另一个。

签名本身不提供此保护,签名仅保证消息是由某人创建的,并且自创建以来未对其进行更改,但它们不包含有关该消息实际用于哪个端点的任何信息 - 这就是目的地到位的地方。

目的地检查是“必须的”,因为SAML的作者认为类似的攻击是危险的,足以保证作为协议的一部分的先发制人保护。