从外部站点执行 POST-Redirect-GET 时,SameSite=strict 如何发挥作用

drc*_*uck 5 cookies session sakai

我们想为我们的应用程序的会话 Cookie 设置 SameSite=strict。但是我们有一些非常特殊的情况(IMS 深度链接),我们希望允许外部站点 POST 到一个非常特殊的 URL 并使用/维护用户的登录状态。我添加了一个令牌参数来在没有 Cookie 的情况下重新建立会话,这样我就可以在不需要 SESSION cookie 的情况下处理 POST - 这可能不优雅,但它工作正常。

但是这个 POST 处理代码完成了它的工作,并重新定向回自身,这导致浏览器发出 GET 请求。在生成的 GET 请求中,浏览器不包含 SESSION cookie。

这看起来很奇怪,因为重定向来自我的服务器(即不是外部服务器)。

所以我的问题是,即使我的系统接受了 POST 并且重定向来自我的系统,SameSite 的规范是否希望将 POST-ReDirect-GET 序列作为一个不获取 cookie 的操作?

我通过向 GET url 添加令牌来解决这个问题,以第二次临时绕过对 Cookie 的需求,然后从那时起一切正常 - 用户仍然从那时起登录。cookie 总是在那里——它只是没有在 POST 或重定向的 GET 上发送。

我在这一切中都使用 Chrome。由于我的 FireFox 忽略了我当前版本的 SameSite - cookie 就像在 SameSite 之前一样(有一段时间)。

我认为我们的实现将使用 SameSite=strict 和允许执行绕过技巧的 URL 白名单,这些 URL 需要有一个特殊的令牌来执行绕过,并且这些 URL 以其他方式保护自己,而不仅仅是登录 cookie。

但我想确保我的设计基于对 SameSite=strict 和 POST-Redirect 的深刻理解。

PS 告诉我重写交互的另一端以便不需要在浏览器中使用 ForeignSite POST 来工作是没有意义的。这是一个规范,我无法控制我需要与之互操作的大量实现。