我們一直在 .NET Core 2.2 應(yīng)用程序中利用 Cookie 身份驗(yàn)證,并在通過 Microsoft 外部第 3 方提供商驗(yàn)證用戶身份后登錄用戶。就在最近,我們觀察到此工作流中的一個錯誤,其中指出:Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler:信息:來自 RemoteAuthentication 的錯誤:關(guān)聯(lián)失敗..”我們已將其縮小到這樣一種情況,即如果用戶已經(jīng)登錄到他們的 Microsoft 帳戶(只有一個帳戶登錄/活動)......并且如果他們隨后登錄到我們的網(wǎng)站,他們將自動登錄而無需選擇他們的帳戶名稱或任何其他交互。更重要的是,如果用戶確實(shí)點(diǎn)擊了他們的賬戶名,這會觸發(fā)另一個登錄請求,我相信這會導(dǎo)致“關(guān)聯(lián)失敗..”錯誤,因?yàn)檎埱?響應(yīng) cookie 存在沖突。我能夠從 localhost 重現(xiàn)該問題,盡管我們實(shí)際的托管服務(wù)提供商在 Azure(應(yīng)用服務(wù))中。我已經(jīng)探索了以下 Microsoft 文檔中提到的一些解決方案/方法,其中提到了負(fù)載平衡器和代理服務(wù)器(轉(zhuǎn)發(fā)標(biāo)頭)的配置......以及在 ASP.NET Core 中強(qiáng)制執(zhí)行 HTTPS:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.1https://learn.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.1&tabs=visual-studio這些似乎沒有解決問題的根源,據(jù)我所知,這是在向 Microsoft 提供商提出安全挑戰(zhàn)時自動登錄/選擇用戶帳戶。這是我們的 Startup.cs 服務(wù)配置中的一個片段,用于第 3 方身份驗(yàn)證配置。 // Authentication is added via Cookie services.ConfigureApplicationCookie(options => options.LoginPath = "/Login"); services.AddAuthentication(opts => { opts.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; opts.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; }) .AddCookie(opts => { opts.Cookie.SecurePolicy = CookieSecurePolicy.Always; opts.LoginPath = "/auth/login"; opts.LogoutPath = "/auth/logout"; opts.ClaimsIssuer = "<ISSUER_HERE>"; // *** redacted for privacy }) });理想情況下,“自動登錄”行為會被阻止,因此用戶必須從 Microsoft 帳戶選擇提示中選擇他們的帳戶(即使他們之前已經(jīng)登錄過)。現(xiàn)在,我們將用戶重定向到一個錯誤頁面,我們可以在其中清除所有 cookie 并讓用戶重新嘗試登錄。如果他們在登錄過程中不斷選擇他們的用戶帳戶并且兩個請求相互沖突,這就會造成問題。任何見解將不勝感激!
1 回答

HUH函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個贊
好吧,我明白了。
這似乎有點(diǎn) hacky,但是,嘿,它有效。
.AddMicrosoftAccount(options =>
{
// Your configuration here
options.Events.OnRedirectToAuthorizationEndpoint = context =>
{
context.HttpContext.Response.Redirect(context.RedirectUri + "&prompt=select_account");
return Task.FromResult(0);
};
})
- 1 回答
- 0 關(guān)注
- 112 瀏覽
添加回答
舉報(bào)
0/150
提交
取消