Cookies的SameSite =无设置丢失

时间:2020-08-10 20:00:52

标签: asp.net asp.net-mvc cookies iframe samesite

我们有一个基于ASP.NET的网站。我们需要在第三方的iframe中运行该网站。该网站的各个部分最近都停止在这种iframe情况下工作,我们已将其范围缩小到用户使用Chrome和AspNet.ApplicationCookie以及在iframe中不可用的几个自定义Cookie(在iframe外部运行没有问题)

该站点使用OWIN身份验证,因此我能够升级到ASP.NET 4.8和OWIN Nuget软件包。这使我可以在CookieSameSite的{​​{1}}中设置CookieAuthenticationOptions属性。之后,我可以看到AspNet.ApplicationCookie被标记为Secure并且SameSite = None。完美。

但是对于自定义cookie,我似乎无法使SameSite设置正常工作。创建cookie的代码是:

IAppBuilder

这些Cookie在iframe之外运行。使用Chrome和Firefox开发人员工具,我看到它们被标记为“安全”,但未设置SameSite设置(在Firefox开发人员工具中特别显示为“未指定”),因此在iframe中运行时它们仍然不可用。

一些相关的事情:

  • 我们安装了.net框架的最新4.8版本,因此我认为我们不需要在服务器上安装任何补丁程序即可支持SameSite。
  • 在本地,cookie的设置看起来正确。我可以看到标记为Secure和SameSite = None的cookie。但是,这在负载平衡服务器设置(负载平衡器后面有2台Windows 2016服务器)上失败。
  • 使用chrome:// flags /,我可以将HttpContext.Current.Response.SetCookie(new HttpCookie(key, value) { Expires = expiration, SameSite = SameSiteMode.None, Secure = true }); 设置为“已禁用”,然后一切都会在iframe中正常运行。 (我认为这只是可以验证问题确实是SameSite)。
  • 我也尝试使用config设置SameSite设置,但无济于事:SameSite by default cookies

我创建的Cookie是否错误?我是否不需要修补程序错了?有什么方法可以确定是否应该以某种方式归咎于负载均衡器?

更新-2020年8月17日

我还没有进一步解释这一点。对我有用的方法是使用出站IIS重写添加“ Secure; SameSite = None;”。所有cookie-这似乎是在4.7.2和4.8更新之前解决此问题的常用方法。

重写确实确保按预期设置了<httpCookies requireSSL="true" sameSite="None" />SameSite。对我来说,这排除了以任何方式影响cookie的负载均衡器。

如果我是对的,那只剩下代码问题,但是,伙计,这看起来很简单。

0 个答案:

没有答案