【问题标题】:Chrome is blocking cookies in private mode for sameSite=none and Secure = CookieSecurePolicy.AlwaysChrome 正在私有模式下阻止 sameSite=none 和 Secure = CookieSecurePolicy.Always 的 cookie
【发布时间】:2022-01-27 18:20:57
【问题描述】:

我正在使用身份服务器 4,并且我已将 cookiePolicy 设置为:

在startup.cs中

var cookiePolicyOptions = new CookiePolicyOptions
        {
            MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None,
            HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.None,
            Secure = CookieSecurePolicy.Always,
            
        };

接下来:

app.UseCookiePolicy(cookiePolicyOptions);

我还响应应用程序以授权 ID4 中的用户。 我正在使用隐式流。当用户处于正常模式时,一切正常。

但是当用户使用私人模式时,登录窗口不会出现。 sign in window

在谷歌浏览器设置中,阻止三十部分 cookie 设置为允许在私人模式下,然后一切正常。

如果应用程序在没有 https 的 localhost 上运行,两种模式都可以。 当应用程序在具有 Https 证书的服务器上时,问题就开始了。

查了很多资料,但还是不知道能不能在授权时允许在私密模式下设置cookies?

如果我应该提供更多信息,请告诉我;)

【问题讨论】:

  • 我自己只是在处理这个问题(我认为是这个问题)。 ..但是使用PHP。您需要在 cookie 本身上设置 securesamesite 属性 - 至少这对我来说是固定的。
  • @ControlAltDel 嗯 .. 我认为 cookie 策略正在设置安全属性和sameSite = none,sameSite 应该设置为其他值吗?您是在身份服务器中设置此属性还是我应该在我的客户端中以某种方式设置此属性?
  • 这是我在 PHP 中所做的: setcookie("foo", $_POST["foo"], [ "expires" => time() + 60 * 60 * 24, "path" => "/", "domain" => "", "secure" => true, "httponly" => false, "samesite" => 'None' ]);

标签: javascript google-chrome identityserver4 asp.net-core-3.1


【解决方案1】:

我的问题是我设置了sameSite=none

这意味着我的 IdentityServer 与我的 Web 客户端的域名不同。

我已更改为sameSite=Lax -这意味着 Identity 和 WebClient 具有相同的域名-但我还需要更改我的 IIS 绑定到端口上 Identity Server 的相同域名: 8443 站点和 Web 客户端站点。 (之前那两个域名不同)

在这种情况下,chrome 不会将 cookie 阻止为 30 部分 cookie,并允许在浏览器中以隐身模式设置 idsrv.external cookie。

【讨论】:

  • 稍微格式化一下,IMO 的答案就很棒 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 2021-09-03
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多