SignOutAsyn c удаляет cook ie, но восстанавливается при возврате в клиентское приложение? - PullRequest
0 голосов
/ 17 февраля 2020

это то, как происходит выход из API:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task Logout(LogoutRequest logoutContext)
    {
        if (User?.Identity.IsAuthenticated == true)
        {
            var prop = new AuthenticationProperties
            {
                RedirectUri = logoutContext.PostLogoutRedirectUri
            };

            await HttpContext.SignOutAsync(IdentityConstants.ApplicationScheme, prop);
            await _events.RaiseAsync(new UserLogoutSuccessEvent(User.GetSubjectId(), User.GetDisplayName()));
        }
    }

в клиентском приложении. У меня есть следующая конфигурация:

        services.AddAuthentication(options =>
        {
            options.DefaultScheme = IdentityConstants.ApplicationScheme;
            options.DefaultChallengeScheme = "oidc";
        })
        .AddCookie(IdentityConstants.ApplicationScheme, options => { options.AccessDeniedPath = "/Home/AccessDenied";  })
        .AddOpenIdConnect("oidc", options =>
        {
            options.Authority = model.Authority;
            options.ClientId = model.ClientId;
            options.SignInScheme = IdentityConstants.ApplicationScheme;
            options.ResponseType = "id_token token";
            options.Scope.Add("openid profile");
        });
        services.AddAuthorization(options =>
        {
            options.AddPolicy("User", p => p.RequireAuthenticatedUser().RequireRole("User"));
        });

, когда я выхожу из системы. ie удаляется, как только я возвращаюсь к клиенту, мне не предлагается войти в систему, и повар ie вернулся. я что-то не так делаю?

1 Ответ

1 голос
/ 17 февраля 2020

Вы не удаляете единый знак повара ie, созданный в вашем провайдере идентификации. Ваш клиент перенаправляет на ваш Identity Provider и снова перенаправляет на ваш клиент с новой аутентификацией, поскольку ваш Identity Provider все еще поддерживает Cook ie. Захватите запросы в Fiddler, чтобы увидеть автоматические перенаправления c.

Вы также должны выйти из oid c, чтобы удалить этого Повара ie:

await HttpContext.SignOutAsync("oidc");

Если ваш Если вы хотите автоматически выйти из системы (без представления «Выход из системы» вашего поставщика удостоверений), вы можете установить значение false ShowLogoutPrompt и установить значение true AutomaticRedirectAfterSignOut в файле AccountOptions.cs.

...