0

我有一个 .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 中使用此行为,或者是否有其他我没有看到的解决方案。任何帮助表示赞赏。

4

1 回答 1

0

我也一直在和这个作斗争。请参阅https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite 我们使用 iframe,因此可能的解决方案是使用 web.config 更改... <forms cookieSameSite="None" />

于 2020-03-16T11:46:33.620 回答