仅使用 SameSite Lax cookie 进行 SSO 的可行性?

2024-01-26

背景

我正在考虑实施方面SameSite今天我的饼干。我已经有了HttpOnly and Secure所以我想这可能没什么大不了的。

为什么它坏了

好吧,事实证明,一旦我实现了这个设置,很多东西就坏了。两者都发生了这种情况SameSite=Lax and SameSite=Strict。我做了一些研究,发现这是由于 SSO 很容易因 SameSite 设置而损坏Lax or Strict(相对于None):

  • 即将到来的浏览器行为变化:开发人员需要了解什么 https://auth0.com/blog/browser-behavior-changes-what-developers-need-to-know/
  • SameSite Cookie 属性:它是什么以及它为何重要 https://adzerk.com/blog/chrome-samesite/
  • Microsoft Edge 即将发生影响网站兼容性的更改 https://learn.microsoft.com/en-us/microsoft-edge/web-platform/site-impacting-changes
  • 微软警告 SameSite Cookie 更改可能会破坏某些应用程序 https://redmondmag.com/articles/2020/01/28/samesite-cookie-changes-break-apps.aspx
  • 单点登录历险记:SameSite Doomsday https://charliedigital.com/2020/01/22/adventures-in-single-sign-on-samesite-doomsday/
  • SameSite cookies 解释 https://web.dev/samesite-cookies-explained/

我的主要浏览器 (Iron 70) 基于 Chromium 70,因此我之前从未遇到过 2 月份向 Chrome 80 用户推出的更改,据说该更改默认没有 cookieSameSite价值观Lax。我安装了最新的 Google Chrome Portable 来查看它,有趣的是,该功能目前似乎是not(谢天谢地)默认为SameSite=Lax因为它可能已经习惯了 - 一旦我明确启用以下标头,我的网站就会在那里崩溃:

Header edit Set-Cookie ^(.*)$ $1;SameSite=Lax

看来这是因为没有明确的SameSite, Chromium 将其视为“洛杉矶国际机场 + 邮政后 2 分钟规则” https://groups.google.com/a/chromium.org/g/blink-dev/c/AknSSyQTGYs/m/YKBxPCScCwAJ?pli=1默认情况下(而且我正在快速测试,所以不到 2 分钟)。

即使Lax不过,我所有的单点登录都被破坏了,我的实时聊天也不再工作了——无论是使用 Websockets 还是 XHR 请求。当我尝试进行单点登录时,不知何故我最终退出了主网站,这也没有多大意义 - 基本上,一切都搞砸了。

  1. 是否有希望让 XHR 或 Websockets 再次使用Lax?我已经聊天了chat.example.com,但我也允许在侧面板中访问它sub.someotherdomain.org。我的猜测是这里的答案是no,解决这个问题的唯一方法是在同一域上提供一个 URL,Apache 只是在幕后指向同一个脚本。烦人,但它could完成了-但是还有其他方法吗?

  2. 我更大的问题是:单点登录本质上与Lax and Strict?我还没有真正发现太多这方面的内容。所有文章似乎都在讨论如何破坏 SSOLax不可避免的,甚至有一些图表可以解释why它会崩溃,但是 SSO 必须是这样吗?

主流解决方法

大多数网站都说要做SameSite=None解决这个问题并在所有用户代理中强制执行旧的行为。从技术上讲,这是可行的,但我想知道是否有任何希望能够使用Lax反而?如何才能使其发挥作用而不必屈服于SameSite=None?


TL;DR - 是的,你can use SameSite=Lax(但不是SameSite=Strict)并且不破坏 SSO!

有两件大事需要注意SameSite饼干:

  • Lax禁止跨站请求使用POST
  • Strict还禁止使用跨站点请求GET

A helpful summary: enter image description here

Source: https://www.wst.space/cookies-samesite-secure-httponly/ https://www.wst.space/cookies-samesite-secure-httponly/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅使用 SameSite Lax cookie 进行 SSO 的可行性? 的相关文章

随机推荐

  • 如何为网站启用 Chromecast?

    This article https support google com chromecast answer 3265953 hl en CA解释了 支持 Chromecast 的网站 的好处 更高的质量 支持 Chromecast 的网
  • SvelteKit:CSS 中引用的静态资源的开发/构建和路径问题

    在 Svelte 文件的 CSS 部分中 假设我使用背景图像 div background image url img bg jpg 图像文件位于static文件夹 static img bg jpg 这个简单的示例在开发模式下完美运行 如
  • Winforms 双缓冲

    我将其添加到表单的构造函数代码中 this SetStyle ControlStyles AllPaintingInWmPaint ControlStyles UserPaint ControlStyles DoubleBuffer tru
  • 将非接口称为“*er”是惯用的吗

    The 有效行动 http golang org doc effective go html interface names states 按照惯例 单方法接口由方法名称加上 er 后缀或类似修饰来构造代理名词 Reader Writer
  • 连接 PhoneGap 与 localhost Web 服务

    我在连接我的 webserwisem PhoneGap Django TastyPie 时遇到问题 我的 PhoneGap 版本 3 3 0 使用纯 html 调用 POST 或 GET 一切正常当我将项目移动到模拟器时问题就开始了 传输无
  • for 循环 vs while 循环 vs foreach 循环 PHP

    首先我是 PHP 新手 我一直在脚本中使用 for 循环 while 循环 foreach 循环 我想知道 哪一个性能更好 选择循环的标准是什么 当我们在另一个循环中循环时应该使用哪个 我一直想知道要使用哪个循环的代码 for i 0 i
  • PHP:调用未定义函数 mb_strlen() - 在启用 mbstring 的自定义编译 PHP 上

    我有这个自定义编译的 PHP v5 3 3 并启用了以下扩展 通过配置 configure prefix usr local php5 3 3 with config file path usr local apache2 conf wit
  • Facebook JS SDK 可以与 Phonegap / Cordova 一起使用吗?

    我有 Senscha 2 0 移动应用程序 我想使用最新的phonegap cordova 构建它 我想添加 Facebook 登录功能 我找到了三个选择 使用ChildBrowser方法 使用应用内浏览器 使用cordova facebo
  • 如何迭代 PostgreSQL jsonb 数组值以在查询中进行匹配

    我的表有很多行 每行都包含一个 jsonb 对象 该对象保存一个数组 其中可能有多个同名但具有不同值的键 我的目标是扫描整个表并验证哪些行在此 json 对象的数组中包含重复值 第 1 行示例数据 Name Bobb Smith Ident
  • javac -parameters 标志的缺点

    我想尝试一些在运行时需要参数名称的框架功能 因此我需要使用以下命令来编译我的应用程序 parameters它将参数的名称存储在 JVM 字节码中 除了jar war的大小之外 该参数的使用还有哪些缺点 将参数名称添加到类文件格式的内容包含在
  • 在 javascript/jquery 中将 base64 转换为图像

    我已经编写了一些使用 javascript jquery 进行图像捕获的代码 下面是代码 function capture image alert capture image var p webcam capture webcam save
  • PHP函数获取数组的前5个值[重复]

    这个问题在这里已经有答案了 Array university gt 57 iit gt 57 jee gt 44 application gt 28 study gt 26 college gt 23 exam gt 19 colleges
  • scons 知道 SConscript 文件位于哪个目录吗?

    我们正在评估 scons 作为构建系统 但我在适应我们的旧系统时遇到了问题 在我们的一些源代码子目录中 我们有一个 sources lib 文件 其中列出了需要编译以组装该目录的目标库的 C 文件的名称 但是 同一目录中还有其他 C 文件
  • 如何将 AutoMapper 与 Ninject.Web.Mvc 结合使用?

    Setup 我有一个AutoMapperConfiguration设置 AutoMapper 映射的静态类 static class AutoMapperConfiguration internal static void SetupMap
  • 将节注入 GNU ld 脚本; binutils 版本之间的脚本兼容性。

    我正在构建类似问题中的东西如何将不同 a 文件中的数据收集到一个数组中 如何使用 ld 脚本保留 a 文件中的部分 https stackoverflow com questions 6568844 how to collect data
  • 从 Fontawesome 导入所有图标

    我在我的 Angular 项目中以这种方式使用 Fontawesome 5 import fontawesome from fortawesome fontawesome import faBold faItalic faUnderline
  • 无论文本长度如何,如何在标签和输入字段之间均匀添加空格?

    假设我有 10 个输入字段 在左侧的输入字段之前有一个 span 标签 它包含文本以指示用户应在字段中输入什么内容 我做了一些事情 但我不确定如何在跨度标签和输入字段之间添加空格 无论文本有多大 像这样 2019年答案 一段时间过去了 我现
  • 如何让 Maven 插件在依赖解析之前运行

    之前有一个答案 但我不认为接受的答案是正确的 https stackoverflow com questions 6120227 how to run maven plugin before dependency check 我创建了一个
  • C# 中的重载除法

    我想在我的 C 类中重载除法运算符 所以 我写道 public string operator object obj 并得到错误 解析器错误 可重载一元运算符除外 那么 我不能重载该运算符吗 在 MSDN 上我没有看到任何示例 http m
  • 仅使用 SameSite Lax cookie 进行 SSO 的可行性?

    背景 我正在考虑实施方面SameSite今天我的饼干 我已经有了HttpOnly and Secure所以我想这可能没什么大不了的 为什么它坏了 好吧 事实证明 一旦我实现了这个设置 很多东西就坏了 两者都发生了这种情况SameSite L