我有一个 .NET 4.5.2 Web 应用程序,我需要在跨站点上下文中传递身份验证 cookie。我通过将它附加到路径来设置 SameSite=None
FormsAuthentication.SetAuthCookie(myUser, false, $"{FormsAuthentication.FormsCookiePath}; SameSite=None; Secure");
,
某些浏览器与 SameSite=None ( https://www.chromium.org/updates/same-site/incompatible-clients ) 不兼容,因此我必须排除它以支持这些浏览器:
FormsAuthentication.SetAuthCookie(myUser, false, FormsAuthentication.FormsCookiePath);
在这两种情况下,.NET 都将 SameSite="Lax" 添加到 cookie 中,因此在第一种情况下 Set-Cookie 标头如下所示:
AC7.AUTH=ABC; path=/; SameSite=None; secure; HttpOnly; SameSite=Lax
在第二种情况下:
AC7.AUTH=ABC; path=/; HttpOnly; SameSite=Lax
这似乎是在我们安装 Microsoft 的 KB4530689 安全更新时引入的。我们卸载了该更新,它恢复为不将“SameSite=Lax”附加到所有 cookie。我不确定如何长期缓解此问题,如果 Microsoft 打算在旧版本的 .NET 中使用此行为,或者是否有其他我没有看到的解决方案。任何帮助表示赞赏。