SAML联合软件是否应该接受相同的SAML响应,只要它在允许的SAML令牌生存期内?
简单来说: IDP(识别提供商)发出SAML响应,然后SP(服务提供商)接受/处理它。可以在首次使用后立即重复使用相同的未修改的SAML响应吗?鉴于SAML发布时间戳在允许的范围内。
安全方面,将SAML令牌(响应)限制为仅一次使用是有意义的,这样即使它被一个中间人" - 它不能重复使用。但是为了实现这一点,软件需要在某处存储有关SAML响应的一些信息:序列号,整个事物的哈希值?
请提供一些链接,说明可能的解释和/或实施示例。
谢谢! 亚历克斯。
答案 0 :(得分:9)
SAML 2.0规范提供了另一种方法来防止重放攻击,这并不意味着在数据库中存储断言的ID。
这项检查确实使重播攻击变得复杂,因为攻击者还需要拥有SP的会话cookie(即使在这种情况下,它已经过了游戏......)。 签署整个回复也是一种很好的做法。
显然,此方法仅在SP启动的方案中有效。
答案 1 :(得分:5)
安全性是否有意义?当然。事实上你可以使用" xs:ID"断言的一部分来帮助你(我公司的软件确实如此)。
来自CORE的第9页:
xs:ID简单类型用于声明SAML标识符 断言,请求和响应。声明为值的值 xs:本规范中的ID必须满足以下属性 除了xs:ID类型本身的定义强加的那些:
•任何分配标识符的一方必须确保存在 该方或任何其他方的概率可以忽略不计 意外地将相同的标识符分配给不同的数据对象。
•如果数据对象声明它具有特定标识符, 必须有一个这样的声明。
我们从断言中抓取该ID,并将其放入具有not-after时间的数组中,然后在该时间到期后将其丢弃。这样就无法重播相同的断言。
在其他软件(特别是本土的东西)中,这完全由受众限制的Not-Before和Not-On-Or-After部分管理。由于某些软件仅依赖于这些值,因此建议的方法是将此期间设置为合理的短期。在完美的世界中,每个人都在使用时间服务器,他们的时钟偏差不超过几秒钟。一分钟之前,一分钟发布时间应该远远不够。虽然没有那么多"安全"在这里,它可以被管理"。