Cookies SameSite属性中断SAML流

Cookies SameSite属性中断SAML流,cookies,saml,saml-2.0,spring-saml,shibboleth,Cookies,Saml,Saml 2.0,Spring Saml,Shibboleth,Chrome80将引入一个新属性,即SameSite 严格-仅为“同一站点”请求附加cookie Lax-为“同一站点”请求发送cookie,以及使用安全HTTP方法(例如,获取头部选项跟踪)的“跨站点”顶级导航 无-为所有“同一站点”和“跨站点”请求发送cookie 关于更多信息,SameSite解释得很好 来自Azure文档: 云服务(服务提供商)使用HTTP重定向绑定将AuthnRequest(身份验证请求)元素传递给Azure AD(身份提供商)。Azure AD然后使用HTTP p

Chrome80将引入一个新属性,即SameSite

  • 严格-仅为“同一站点”请求附加cookie
  • Lax-为“同一站点”请求发送cookie,以及使用安全HTTP方法(例如,获取头部选项跟踪)的“跨站点”顶级导航
  • 无-为所有“同一站点”和“跨站点”请求发送cookie
关于更多信息,SameSite解释得很好

来自Azure文档:

云服务(服务提供商)使用HTTP重定向绑定将AuthnRequest(身份验证请求)元素传递给Azure AD(身份提供商)。Azure AD然后使用HTTP post绑定将响应元素发布到云服务

我的问题是为什么SameSite会破坏SAML流? 如果IdP cookie未正确设置为SameSite=None,则不会在SP向IdP发出请求时将其发送,并且会要求用户再次登录IdP

资料来源:

Shibboleth IDP就是这么做的:

当IdP将响应发回SP时,如果SameSite=Lax,则用户代理将 不发送具有SP域的Cookie。即使它不发送cookies 我看SP没有任何问题

在IDPInit上,可能不会有任何问题,因为在发送的SAML响应之外没有任何状态

然而,SP init流很可能被破坏。原因是大多数SP产品都通过在将用户发送到IdP之前设置的cookie跟踪浏览器会话。浏览器将被重定向到IdP,经过身份验证,并通过POST将响应发送回SP。如果cookie未设置为
SameSite=None;安全
(不要忘记-需要
SameSite=None
的cookie也必须设置为
Secure
),然后SP的cookie不会随POST一起传递回SP,这样SP就不会拥有安全配置会话所需的所有部分


一种方法是,用户需要两组密钥才能在SP上建立安全会话:第一种是,它希望从cookie中获得会话密钥,另一种是,它希望从IdP中获得密钥。

感谢您的资源。嗯,你的意思是SP向IdP发送AuthnRequest,对吗。如果SP使用POST绑定,这是正确的,如果SP使用重定向绑定,这是没有问题的。顺便问一下,为什么选择POST而不是重定向绑定?嗯,这是因为POST消息可能具有容量吗?千万不要使用重定向将断言呈现回SP,这是一个巨大的数据泄漏问题,因为任何具有完整URL的内容(如分散在各个入口/出口点的各种日志等)都包含有关断言的所有信息。
>> Even if it does not send cookies I don't see there is any problem with SP.