【问题标题】:SameSite=none and insecure http cookies fail to work on ChromeSameSite=none 和不安全的 http cookie 无法在 Chrome 上运行
【发布时间】:2021-01-11 01:25:23
【问题描述】:

我在 http://localhost:5002 本地运行我的 aspnet 核心应用程序,出于某些原因我不想使用 https。它使用 OpenIdConnect 中间件进行身份验证,并生成临时 cookie,如下所示:

因此,由于缺少 secure 标志,Chrome 会阻止这些 cookie。另一方面,此请求是 HTTP(不安全),无法标记 cookie secure。我看到的唯一方法是避免使用 HTTP 并切换到 HTTPS,这对我来说不是本地开发的好选择。我还能使用HTTP + OpenIdConnect middleware + Crome 吗?解决方法是什么?

【问题讨论】:

  • OpenIdConnect 有一个名为bool RequireHttpsMetadata 的属性您是否尝试禁用它?您之前是否在 https 上运行过您的应用程序?因为HSTS 有时网站被缓存为https,需要从缓存中清除。
  • 是的,我之前在 https 上运行该应用程序。现在我尝试了options.RequireHttpsMetadata = false 并清除了 chrome 中的 hsts 缓存,但没有运气。我也发现了类似的问题,他们不得不重新安装 VisualStudio 来解决这个问题。 stackoverflow.com/a/58892860/2528649 太令人失望了。
  • 实际上链接stackoverflow.com/a/58892860/2528649 与 SameSite=none 无关,因此解决方案无济于事

标签: google-chrome asp.net-core cookies asp.net-identity samesite


【解决方案1】:

也许这可以带来一些启发-LINK

来自文章

Chrome 正在更改在第一方和第三方上下文中发送 cookie 的默认行为。 未指定 SameSite 属性的 Cookie 将被视为指定 SameSite=Lax,即默认情况下它们将仅限于第一方或同站点上下文。 用于第三方或跨站点上下文的 Cookie 必须指定 SameSite=None 和 Secure。 注意:这也意味着跨站点或第三方 cookie 仅限于安全/HTTPS 连接。

因为,我猜,您的身份验证服务器是来自另一个域的服务器,它是第三方 cookie,因此它属于新的 Chrome (>= v80) 政策。

这里的解决方法是降级您的 Chrome 版本或使用没有这些限制的浏览器。

【讨论】:

  • Note: this also means cross-site or third-party cookies are restricted to secure / HTTPS connections only. 这意味着在 Chrome >=80 上我们应该忘记 HTTP。感谢您的信息。
猜你喜欢
  • 1970-01-01
  • 2020-12-16
  • 2020-05-17
  • 2021-01-09
  • 2020-02-02
  • 2019-12-18
  • 2020-05-22
  • 2020-02-19
相关资源
最近更新 更多