我通过以下组合来实现这一目标: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(任务任务)处。
森林海
HUH函数
慕容708150
相关分类