为了账号安全,请及时绑定邮箱和手机立即绑定

关联失败。OIDC身份验证期间,在Microsoft.AspNetCore

关联失败。OIDC身份验证期间,在Microsoft.AspNetCore

C#
烙印99 2021-05-21 18:14:12
我通过以下组合来实现这一目标: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秒的匿名页面,然后重定向到“ /”(主页)。似乎有时会奏效,但并非总是如此。我没主意了。解决方法1)用户可以再次转到主页,然后按F5键,直到它起作用。似乎每个F5都使它们向前迈进了一步,一旦填充了OpenID cookie,其他所有内容(在openid完成后,我通过adal.js可以使用AJAX获得更多的身份验证)。2)绕过应用程序网关,并使用直接服务结构群集DNS名称(因为它是http,所以不可接受)。细节System.Exception:关联失败。在Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.d__12.MoveNext()处-从上次引发异常的位置开始的堆栈跟踪-在System.Runtime处System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()处。 Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.d__6.MoveNext()上的CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)-从上次引发异常的位置开始的堆栈结束跟踪-在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (),位于Microsoft.AspNetCore.Builder.RouterMiddleware.d__4的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)处。
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我有同样的问题,如果您的环境是Web场,则应使用DataProtection共享密钥。


查看完整回答
反对 回复 2021-05-23
?
HUH函数

TA贡献1836条经验 获得超4个赞

我在Chrome中遇到了类似的Correlation错误,但在Safari中却没有。这解决了我所有的相关问题。


查看完整回答
反对 回复 2021-05-23
?
慕容708150

TA贡献1831条经验 获得超4个赞

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


这在Startup.cs中定义


.AddOpenIdConnect("Auth0", options =>

            {

                options.CallbackPath = new PathString("/signin-auth0");

一旦身份验证提供者在成功身份验证后返回,它将告诉您应用程序中的授权中间件,应在哪个URL上侦听。然后,中间件本身会将应用程序重定向到您的Login操作中定义的回调URL(下面的示例代码)。


此后(经过两天的奋斗),一切都开始了。


public class AccountController : Controller

{

    [HttpGet]

    public async Task Login()

    {

        await HttpContext.ChallengeAsync("Auth0", new AuthenticationProperties() { RedirectUri = "/my-callback-page" });

    }

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


这在Startup.cs中定义


.AddOpenIdConnect("Auth0", options =>

            {

                options.CallbackPath = new PathString("/signin-auth0");

一旦身份验证提供者在成功身份验证后返回,它将告诉您应用程序中的授权中间件,应在哪个URL上侦听。然后,中间件本身会将应用程序重定向到您的Login操作中定义的回调URL(下面的示例代码)。


此后(经过两天的奋斗),一切都开始了。


public class AccountController : Controller

{

    [HttpGet]

    public async Task Login()

    {

        await HttpContext.ChallengeAsync("Auth0", new AuthenticationProperties() { RedirectUri = "/my-callback-page" });

    }

}


查看完整回答
反对 回复 2021-05-23
  • 3 回答
  • 0 关注
  • 280 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信