第25章 退出外部身份提供商 - Identity Server 4 中文文档(v1.0.0)
当用户注销 identityserver并且他们使用外部身份提供程序登录时,可能会将其重定向到注销外部提供程序。并非所有外部提供商都支持注销,因为它取决于它们支持的协议和功能。
要检测是否必须将用户重定向到外部身份提供程序以进行注销通常是通过使用idp
在identityserver中发布到cookie中的声明来完成的。设置到此声明中的值是authenticationscheme
相应的身份验证中间件。在签出时,咨询此声明以了解是否需要外部签出。
由于正常注销工作流程已经需要清理和状态管理,因此将用户重定向到外部身份提供商是有问题的。然后,在identityserver完成正常注销和清理过程的唯一方法是从外部身份提供程序请求在注销后将用户重定向回identityserver。并非所有外部提供商都支持退出后重定向,因为它取决于它们支持的协议和功能。
然后,注销的工作流程将撤消identityserver的身份验证cookie,然后重定向到请求注销后重定向的外部提供程序。退出后重定向应保持此处描述的必要签出状态(即logoutid
参数值)。要在外部提供程序注销后重定向回identityserver,redirecturi
应该authenticationproperties在使用asp.net core的signoutasyncapi
时使用,例如:
[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); }
一旦用户退出外部提供程序然后重定向回来,identityserver的正常注销处理应该执行,这涉及处理logoutid
和执行所有必要的清理。
上一篇: 发微信朋友圈文案不折叠方法
下一篇: php设计模式 Proxy (代理模式)
推荐阅读
-
第29章 保护API - Identity Server 4 中文文档(v1.0.0)
-
第27章 联合网关 - Identity Server 4 中文文档(v1.0.0)
-
第26章 联合注销 - Identity Server 4 中文文档(v1.0.0)
-
第25章 退出外部身份提供商 - Identity Server 4 中文文档(v1.0.0)
-
第23章 Windows身份验证 - Identity Server 4 中文文档(v1.0.0)
-
第28章 确认(Consent) - Identity Server 4 中文文档(v1.0.0)
-
第63章 ASP.NET Identity 支持 - Identity Server 4 中文文档(v1.0.0)
-
第41章 CORS - Identity Server 4 中文文档(v1.0.0)
-
第38章 刷新令牌 - Identity Server 4 中文文档(v1.0.0)
-
第65章 博客帖子 - Identity Server 4 中文文档(v1.0.0)