Я запускаю этот проект https://github.com/JaimeStill/FullstackOverview, Это простой пример использования Azure Ad с ядром .net. Вход с рекламой работает, вычеркнуть нет.
После выхода пользователь перенаправляется на страницу входа, и пользователь снова входит в систему. Похоже, cookie не удаляется. Это соответствующий код:
public static async Task MicrosoftLogout(this HttpContext context)
{
if (context.User != null && context.User.Identity.IsAuthenticated)
{
await context.SignOutAsync(); //CookieAuthenticationDefaults.AuthenticationScheme not helping
await context.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
await context.SignOutAsync("Cookies");
//await context.SignOutAsync("oidc");
context.Response.Cookies.Delete(MicrosoftAccountDefaults.AuthenticationScheme);
context.Response.Cookies.Delete(CookieAuthenticationDefaults.AuthenticationScheme);
context.Response.Cookies.Delete(".AspNetCore.Cookies");
context.Response.Cookies.Delete(".AspNetCore.Identity.Application");
context.Response.Cookies.Delete("Cookies");
//context.Response.Redirect("/");
}
}
public static void AddAuthProviders(this IServiceCollection services, string appId, string password)
{
services.AddAuthentication(auth =>
{
auth.DefaultChallengeScheme = MicrosoftAccountDefaults.AuthenticationScheme;
auth.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
auth.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddMicrosoftAccount(options =>
{
options.ClientId = appId;
options.ClientSecret = password;
options.Events = new Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents
{
OnRemoteFailure = OnAuthenticationFailed
};
});
}
Когда я вручную удаляю cookie (удаляю cookie в браузере), а затем отключаюсь, он работает. Код в методе MicrosoftLogout - это то, что я пытаюсь, изначально он был только
ожидание контекста. SignOutAsync ();
Удаление файлов cookie перед выходом из системы также не помогает ..
[HttpGet]
public async Task Logout()
{
foreach (var cookieKey in Request.Cookies.Keys)
{
Response.Cookies.Delete(cookieKey);
}
await HttpContext.MicrosoftLogout();
}