将.net core v2.1.13升级到v2.1.16后,docker上的IdentityServer4在chrome中不起作用

问题描述 投票:0回答:1

我有一个使用.net core v2.1.13正常运行的应用程序。升级到v2.1.16版本后,某些运行Google chrome的计算机无法创建.AspNetCore.Correlation.oidc cookie

在用户登录后,他被重定向到错误所在的https:/// signin-oidc

System.Exception: An error was encountered while handling the remote login.
 ---> System.Exception: Correlation failed.
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.StatusCodePagesMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

错误可以在运行最新版Google chrome的一系列计算机上重现。但如果在其他浏览器(如Firefox,Opera,Edge等)中使用,则可以使用。

docker asp.net-core identityserver4 asp.net-core-2.1
1个回答
0
投票

我从本月初开始遇到了同样的问题,没有运气就搜索了github上的问题和stackoverflow上的线程,直到遇到这个问题:

https://devblogs.microsoft.com/aspnet/upcoming-samesite-cookie-changes-in-asp-net-and-asp-net-core/

因此,如果我理解正确,Chrome似乎正在更改Cookie的“ SameSite”属性的标准,以强制将其设置为“松散”。默认情况下,当OIDC中间件中间件生成其关联cookie(和nonce)cookie时,它将“ SameSite”属性设置为“ None”。这就是我在配置中所做的:

.AddOpenIdConnect(options =>
{
    // Other lines were omitted, only these two are useful to fix your problem

    options.NonceCookie.SameSite = SameSiteMode.Lax
    options.CorrelationCookie.SameSite = SameSiteMode.Lax

});

我不知道它会影响其他浏览器上的行为...此后,我在Chrome,Firefox和Edge中进行了测试,没有问题。如果有任何我不知道的副作用,有人可以纠正我。

编辑:我的问题似乎已自行解决,我今天在没有修复的版本中再次尝试,并在chrome:// flags中将标志清楚地打开,并且似乎不再发生此问题。

© www.soinside.com 2019 - 2024. All rights reserved.