Hóa ra nguyên nhân gốc là cuộc gọi Ajax.
Dòng vấn đề là
1) Cookie OAuth đã hết hạn sau một thời gian
2) Hết hạn thường gây ra chuyển hướng trang để login.microsoft.com
để làm mới các tập tin cookie. Trong bước này, khuôn khổ OAuth thêmnonce
cookie mới vào phản hồi (mọi thời điểm)!
3) Nhưng Ajax không xử lý các chuyển hướng bên ngoài miền (tên miền chéo đến login.microsoft.com
). Nhưng cookie đã được thêm vào trang.
4) Cuộc gọi Ajax định kỳ tiếp theo lặp lại quy trình làm tăng nhanh các cookie 'nonce'.
Giải pháp
tôi đã phải kéo dài "OWIN OpenID" mã thiết lập khuôn khổ để xử lý các cuộc gọi Ajax cách khác nhau - để ngăn chặn chuyển hướng và dừng việc gửi các tập tin cookie.
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = ctx =>
{
bool isAjaxRequest = (ctx.Request.Headers != null && ctx.Request.Headers["X-Requested-With"] == "XMLHttpRequest");
if (isAjaxRequest)
{
ctx.Response.Headers.Remove("Set-Cookie");
ctx.State = NotificationResultState.HandledResponse;
}
return Task.FromResult(0);
}
}
});
}
Trình gọi Ajax phải được điều chỉnh để phát hiện mã 401
và thực hiện làm mới toàn bộ trang (chuyển hướng nhanh đến cơ quan Microsoft).
Nguồn
2016-04-22 13:30:50
Cảm ơn bạn. Tôi đã có một vấn đề tương tự và điều này đã giúp giải quyết nó. – Namrehs
Điều này cũng xuất hiện để giải quyết vấn đề của tôi sau khi tôi xóa cookie chrome. Trớ trêu thay vì trình duyệt mới của Microsoft ... có rất nhiều mâu thuẫn và các vấn đề về hiệu năng như IE, vì vậy tôi đã quay lại sử dụng Chrome ngay bây giờ. –
Giải quyết được sự cố của tôi. Cảm ơn –