关联失败。在OIDC身份验证期间,位于Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler处

问题描述 投票:2回答:4

我通过以下组合实现这一目标:1)浏览器隐身模式(Chrome)2)应用程序位于Azure应用程序网关的后面(如果不是,则不会复制)。基于Cookie的关联性已关闭(默认);如果将其打开,似乎会使再现发生的频率更高。

代码是普通的普通OIDC authN + Cookie。

        services.AddAuthentication(options =>
        {
            options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddAzureAd(options => {
            Configuration.Bind("AzureAd", options);
        })
        .AddCookie(p => p.SlidingExpiration = true);

我按照建议将X-Forwarded-Proto标头转发到auth中间件,因此redirect_uri使用正确的协议方案。

以代码方式处理

我试图处理OnRemoteFailure()事件,并重定向到“ / Home / AuthRedirect”,这是一个等待20秒的匿名页面,然后重定向到“ /”(主页)。它似乎有时起作用,但并非总是如此。我没有主意。

WORKAROUND

1)用户可以再次转到主页,然后按F5键,直到它起作用为止。似乎每个F5都使它们向前迈进了一步,一旦填充了OpenID cookie,其他所有内容(在openid完成后,我通过adal.js可以使用AJAX获得更多的身份验证)。2)绕过应用程序网关,并使用直接服务结构群集DNS名称(不可接受,因为它是http)。

详细信息

System.Exception:关联失败。在Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.d__12.MoveNext()---从之前引发异常的位置开始的堆栈结束跟踪---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.d__6.MoveNext()---从之前引发异常的位置开始的堆栈结束跟踪---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()---从之前引发异常的位置开始的堆栈结束跟踪---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext()---从之前引发异常的位置开始的堆栈结束跟踪---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext()

我通过以下组合实现这一目标:1)浏览器隐身模式(Chrome)2)应用程序位于Azure应用程序网关的后面(如果不是,则不进行复制)。基于Cookie的相似性已关闭(...

asp.net-core asp.net-identity openid-connect azure-application-gateway
4个回答
0
投票
我有同样的问题,如果您的环境是Web场,则应使用DataProtection共享密钥。

2
投票
我有同样的问题。我正在为授权定义多个外部端点。就我而言,我定义了多个客户端正在使用的回调路径。一旦定义了唯一的回调路径,问题就解决了:例如:

2
投票
我有同样的问题,但是我的问题是由于我对身份验证工作流程的理解,这是错误的。有两个重要的回调URL,我认为它们的作用相同。我错了。

0
投票
我在Chrome中有一个类似的Correlation错误,但没有Safari ...原来,当使用SameSite.None时,必须使用https运行自定义站点(甚至是本地主机)。这解决了我所有的相关问题。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.