IdentityServer4 правильно обрабатывает выход из системы

У меня есть проект IndentityServer4, который обрабатывает функции входа в систему и отдельный MVCClient, мне нужна функция выхода из клиента MVC, однако, глядя на то же самое, просто есть это (клиент MVC):

public async Task Logout()
    {
        await HttpContext.Authentication.SignOutAsync("Cookies");
        await HttpContext.Authentication.SignOutAsync("oidc");
    }

но в проекте identityserver4 есть более сложный выход из системы, который, кажется, делает гораздо больше:

[HttpPost]
    [ValidateAntiForgeryToken]
    [AllowAnonymous]
    public async Task<IActionResult> Logout(LogoutViewModel model)
    {
        var vm = await _account.BuildLoggedOutViewModelAsync(model.LogoutId);
        if (vm.TriggerExternalSignout)
        {
            string url = Url.Action("Logout", new { logoutId = vm.LogoutId });
            try
            {
                // hack: try/catch to handle social providers that throw
                await HttpContext.Authentication.SignOutAsync(vm.ExternalAuthenticationScheme,
                    new AuthenticationProperties { RedirectUri = url });
            }
            catch (NotSupportedException) // this is for the external providers that don't have signout
            {
            }
            catch (InvalidOperationException) // this is for Windows/Negotiate
            {
            }
        }

        // delete authentication cookie
        await _signInManager.SignOutAsync();

        return View("LoggedOut", vm);
    }

Может кто-нибудь объяснить логику, что действительно требуется от клиента.


person RichardB    schedule 14.03.2017    source источник


Ответы (1)


Первый метод выхода из системы используется в клиенте MVC. Второй код принадлежит службе IdentityServer.

Первый Logout инициализирует некоторое состояние для процесса выхода и перенаправляет на представление Logout на IdentityServer (если вы посмотрите на примеры, вы увидите два Logout в коде IdentityServer AccountController: один для представления проверки выхода и один обработчик POST).

person M.R.    schedule 23.05.2017