SAML令牌是否缓存/存储在浏览器的任何位置?

时间:2012-11-20 20:47:47

标签: saml saml-2.0

场景:

  1. 浏览器(用户)从服务提供商(SP)请求资源。
  2. SP将(使用SAML请求)重定向到身份提供商(IdP)。
  3. 自首次登录以来,用户向(IdP)提供他/她的有效凭证。
  4. IdP然后将浏览器(包含SAML令牌的SAML响应)重定向到SP页面。
  5. 我有两个问题:

    一个。在步骤4中,浏览器是否存储或缓存SAML响应和/或SAML令牌?

    B中。如果是,那么什么样的东西(属性?超时?协议?)阻止我获取存储的SAML令牌。然后将其复制到另一台计算机(使用新会话)并使用该令牌登录到同一个SP?

4 个答案:

答案 0 :(得分:10)

答案是“有点”重新缓存。在您的方案中,响应将通过POST从浏览器发送到服务提供商。因此,浏览器可以“缓存”包含SAML响应的POST数据。因此,就像浏览器中的任何其他POST事件一样,如果用户在登录SP后再次使用后退按钮以返回POST事件,则可以将POST数据重新发送给SP。

有一些事情可以帮助防止Response被劫持 -

  1. 在各方之间使用HTTPS
  2. 执行NotBefore& NotOnOrAfter属性
  3. SP执行一次性使用标准(SP必须确保在其有效期内不会重复使用响应。如果在有效期窗口之外收到消息,则SP应丢弃该消息)

答案 1 :(得分:4)

IDP通常在客户端浏览器上存储会话cookie,用于标识SAML会话。此会话cookie被盗可能不会受到任何其他会话cookie的保护。

在SP和IDP之间的通信中使用HTTPS将为会话劫持提供大量保护。

答案 2 :(得分:3)

对于问题A,它可能取决于您使用的浏览器。

对于问题B,有几种机制阻止SAML响应被重用:

  1. SubjectConfirmationData具有属性NotBefore和NotOnOrAfter,用于指定SAML断言有效的时间范围。因此,SAML断言不能在此时间范围之外使用。
  2. SubjectConfirmationData具有属性InResponseTo,用于指定为其发出SAML断言的SAML请求。因此,SAML断言不能用于其他SAML请求。
  3. SP必须确保不通过维护一组使用过的SAML断言来重播SAML断言。
  4. 您可以阅读SAML配置文件规范的第4.1.4.3节和第4.1.4.5节。

答案 3 :(得分:0)

我知道这很旧,但答案是肯定的,浏览器将SAML令牌存储为Cookie。 (通常)您可以通过各种流量/会话检查员(如Fiddler,FF上的SAML Tracer等)在浏览器的Cookie列表中看到它。