Identity Server 4 - федеративный выход из Google при использовании в качестве IDP - PullRequest
0 голосов
/ 30 мая 2018

Я настроил Google в качестве внешнего поставщика удостоверений.Как настроить IdentityServer для выхода из этого внешнего провайдера идентификации и всех моих клиентских приложений?

К вашему сведению, выход из клиентского приложения уже работает.Просто хочу также выйти из Google.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Это то, что я сделал.В окне выхода из системы я добавил iframe и кнопку, которая при нажатии загружает URL-адрес выхода из Google в iframe.Кажется, это работает хорошо.

0 голосов
/ 31 мая 2018

Ответ

Google не поддерживает это Выход из системы для внешнего провайдера идентификации Google не работает

Справочная информация:

Когда пользователь выходит из IdentityServer и использует для входа внешний поставщик удостоверений, вероятно, его следует перенаправить на выход из внешнего поставщика.Not all external providers support sign-out, as it depends on the protocol and features they support.

Чтобы определить, что пользователь должен быть перенаправлен к внешнему провайдеру идентификации, для выхода обычно используется утверждение idp, выданное в cookie-файле на IdentityServer.Значение, указанное в этой заявке, представляет собой AuthenticationScheme соответствующего промежуточного программного обеспечения для аутентификации.Во время выхода из этой заявки проводится проверка, чтобы узнать, требуется ли внешний выход.

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout(LogoutInputModel model)
{
    // build a model so the logged out page knows what to display
    var vm = await _account.BuildLoggedOutViewModelAsync(model.LogoutId);

    var user = HttpContext.User;
    if (user?.Identity.IsAuthenticated == true)
    {
        // delete local authentication cookie
        await HttpContext.SignOutAsync();

        // raise the logout event
        await _events.RaiseAsync(new UserLogoutSuccessEvent(user.GetSubjectId(), user.GetName()));
    }

    // check if we need to trigger sign-out at an upstream identity provider
    if (vm.TriggerExternalSignout)
    {
        // build a return URL so the upstream provider will redirect back
        // to us after the user has logged out. this allows us to then
        // complete our single sign-out processing.
        string url = Url.Action("Logout", new { logoutId = vm.LogoutId });

        // this triggers a redirect to the external provider for sign-out
        return SignOut(new AuthenticationProperties { RedirectUri = url }, vm.ExternalAuthenticationScheme);
    }

    return View("LoggedOut", vm);
}

Извлечено непосредственно из документации Выход из внешних провайдеров идентификации

...