我已将google配置为外部身份提供商。如何配置IdentityServer以注销此外部身份提供程序以及我的所有客户端应用程序?
仅供参考,客户端应用程序退出已经正常工作。只是想让用户退出谷歌。
答案 0 :(得分:1)
<强> ANWER 强>
Google并不支持Signout for Google External Identity Provider isn't working
背景资料:
当用户退出IdentityServer并且他们使用外部身份提供商登录时,可能会将他们重定向到也注销外部提供商。 Not all external providers support sign-out, as it depends on the protocol and features they support.
要检测是否必须将用户重定向到外部身份提供程序以进行注销通常是通过使用在IdentityServer中发布到cookie中的idp声明来完成的。设置到此声明中的值是相应身份验证中间件的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);
}
中删除
答案 1 :(得分:0)
这就是我所做的。在已注销的视图中,我添加了一个iframe和一个按钮,单击该按钮会在iframe中加载google注销网址。这似乎运作良好。