NetCore OpenIdConnect выделять не работает - PullRequest
0 голосов
/ 26 апреля 2019

Я запускаю этот проект 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...