前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IdentityServer Topics(7)- 注销

IdentityServer Topics(7)- 注销

作者头像
晓晨
发布2018-06-22 16:00:36
2K0
发布2018-06-22 16:00:36
举报
文章被收录于专栏:晓晨的专栏晓晨的专栏

注销IdentityServer与删除身份cookie一样简单,但为了完成联合注销,我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供程序)中注销。

删除身份Cookie

要删除身证cookie,只需在HttpContext的扩展方法SignOutAsync即可。你需要传递一个值IdentityServerConstants.DefaultCookieAuthenticationScheme ,如果你修改了他,那么使用你自定义的值。

代码语言:javascript
复制
await HttpContext.SignOutAsync(IdentityServerConstants.DefaultCookieAuthenticationScheme);

或者

代码语言:javascript
复制
await HttpContext.SignOutAsync();

通常,您应该提示用户注销(意思是需要POST方式提交注销请求),否则攻击者可能会热链接到您的注销页面(GET方式),导致用户被自动注销。

通知客户端已被注销的用户信息

作为注销过程的一部分,您需要确保向客户端应用程序通知用户已注销。IdentityServer支持服务器端的客户端(MVC Client)的前端通信规范,服务器端的客户端(MVC Client)的后端通信规范,以及基于浏览器的JavaScript客户端(例如SPA,React,Angular等)的会话管理规范。

前端通信

要通过前端通信规范从服务器端的客户端应用程序注销用户,IdentityServer中的“注销”页面必须呈现<iframe>以通知客户端用户已注销。希望被通知的客户端必须设置FrontChannelLogoutUri的值。IdentityServer跟踪用户登录的客户端,并在IIdentityServerInteractionService(详情)上提供名为GetLogoutContextAsync的API。该API返回一个带有SignOutIFrameUrl属性的LogoutRequest对象,所以你注销的页面必须呈现为<iframe>

后端通信

通过后端通信来注销用户,IdentityServer中的SignOutIFrameUrl端点将自动触发服务器到服务器的调用,将签名注销请求传递给客户端。这意味着即使没有前端客户端,IdentityServer中的“注销”页面仍然必须呈现一个<iframe>到SignOutFrameUrl,希望收到通知的客户端必须设置BackChannelLogoutUri配置值

基于浏览器的JavaScript客户端

鉴于会话管理规范是如何设计的,IdentityServer中没有什么特别的,您需要通知这些客户端用户已经退出。 但是,客户端必须对check_session_iframe执行监视,并且这由oidc-client JavaScript库实现。

由客户端应用程序发起的注销

如果注销是由客户端应用程序启动的,则客户端首先将用户重定向到最终会话端点。 在会话结束端点进行处理可能需要通过重定向到注销页面来维护一些临时状态(例如,客户端的注销,注销重定向uri)。 该状态可能对注销页面有用,并且状态的标识符通过logoutId参数传递到注销页面。

交互服务上的GetLogoutContextAsync API可用于加载状态。感兴趣的是ShowSignoutPrompt,它指示注销请求是否已通过身份验证,因此不会提示用户注销。

默认情况下,此状态作为通过logoutId值传递的受保护数据结构进行管理。 如果您希望在会话终端和注销页面之间使用其他持久性,则可以实现IMessageStore <LogoutMessage>并在DI中注册实现。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 删除身份Cookie
  • 通知客户端已被注销的用户信息
    • 前端通信
      • 后端通信
        • 基于浏览器的JavaScript客户端
        • 由客户端应用程序发起的注销
        相关产品与服务
        多因子身份认证
        多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档