一、前言

单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用下面的图来说明:

单点注销流程

步骤分析:

1.用户在CRM系统中点击注销按钮.会重定向到统一认证中心的注销方法

2.统一认证中心接受到注销请求之后,会销毁全局的会话.

3.统一认证中心会拿到之前在该系统中注册的子系统集合.

4.依次的调用子系统的登出方法,销毁局部会话.

5.每个系统中的会话都已经销毁之后,跳转到登陆页面.

二、系统中的Cookie和Session存储图解

以下图解是基于单点登录图解,在之前的基础上,添加一些信息来帮我们更好的完成单点注销的功能.

图01:我们在统一认证中心登录成功后.除了需要做这几件事情.

1.创建令牌,后续操作中得发给子系统,相当于间接授权.

2.创建全局会话,并把令牌存储到全局会话中.

3.把令牌信息存储到数据库中的t_token表中.主要是后续客户端校验token的有效性需要查询这种表.

4.重定向到之前用户请求的地址redirectUrl.并把令牌发给该子系统.http://www.crm.com/employee?token=VcnVMguCDWJX5zHa

还需要创建一张t_client_info信息

这张表存储的是究竟有哪些子系统在统一认证中心注册了.

在单点登录的时候拿到注册子系统的集合,依次调用子系统的登出方法.

单点注销01

图02:我们在CRM系统给统一认证中心发送一个校验令牌token有效性的请求的时候.

除了带上令牌token信息之外.还需要带上如下信息:

1.客户端的登出地址:http://www.crm.com/logout

2.客户端的JSESSIONID(目的是在调用客户端销毁方法的时候能找到对应的会话并销毁)

所以此时请求的地址为:

http://www.sso.com/verify?token=VcnVMguCDWJX5zHa&clientUrl=http://www.crm.com/logout&JSESSIONID=F4C441B40D00A03DD8DDEBF751F2BF01

单点注销02

图03:当两个系统都已经在统一认证中心注册好之后,数据库表t_token中存储的信息如下图所示.

单点注销03

图04:我们在CRM系统中点击注销按钮,这个注销按钮的地址其实指向

http://www.sso.com/logout,访问的是统一认证中心的注销方法.

单点注销04

图05:浏览器发出请求http://www.sso.com/logout,浏览器会根据请求的域名找到本地的sso.com目录cookie,并把cookie里面的信息一并带到服务器.d

通过cookie中的JSESSION可以找到统一认证中心的会话对象.

单点注销05

图06:拿到统一认证中心的会话对象之后

1.取出会话中的令牌信息token,通过令牌信息在表t_clinet_info中找到之前注册的子系统集合.

2.遍历子系统集合,依次调用子系统的登出方法,并把JSESSIONID带上.

单点注销06

图07:子系统接受到请求之后,根据JSESSIONID找到对应的会话对象进行销毁.

单点注销07

图08:需要把令牌信息从数据库中删除.

单点注销08

图09:清除全局会话对象.

单点注销09

图10:响应统一认证中心的登陆页面

单点注销10

统一认证中心与客户端通信方式有多种,这里以简单好用的HttpURLConnection为例,WebService、rpc、restful api都可以.

作者:叩丁狼教育

链接:https://www.jianshu.com/p/23f...

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

sso 登出_最强SSO单点登录教程(三)单点注销流程分析相关推荐

  1. SSO单点登录教程案例 客户端和服务端

    这里写自定义目录标题 前言 条件 环境要求 准备工作 下载基础项目 项目结构说明 执行流程图 代码实现 单点登录步骤梳理: 代码下载 前言 文章摘抄:https://www.jianshu.com/p ...

  2. SSO单点登录教程(四)自己动手写SSO单点登录服务端和客户端

    作者:蓝雄威,叩丁狼教育高级讲师.原创文章,转载请注明出处. 一.前言 我们自己动手写单点登录的服务端目的是为了加深对单点登录的理解.如果你们公司想实现单点登录/单点注销功能,推荐使用开源的单点登录框 ...

  3. shiro单点登录原理_SSO单点登录三种情况的实现方式详解

    单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统--百度经验.百度知道.百度文库等 ...

  4. 畅言单点登录php代码,畅言 - 帮助 - wordpress单点登录教程

    wordpress单点登录教程 WordPress的站长,畅言提供wordpress站点的单点登陆服务,下面是wordpress单点登陆配置的示例. 1.下载wordpress单点登陆插件 2.将wo ...

  5. sso 登出_SSO单点登录/登出系统实现

    先把源码贴出来,再慢慢讲解思路和原理以及实现方式 -->源代码1.0 整合了Mybatis +redis/redis集群二级缓存+cookie加密机制+token -->源代码2.1  密 ...

  6. cas client 更新ticket_cas sso单点登录系列6_cas单点登录防止登出退出后刷新后退ticket失效报500错...

    转(http://blog.csdn.net/ae6623/article/details/9494601) 问题: 我登录了client2,又登录了client3,现在我把client2退出了,在c ...

  7. CAS 5.2.x 实现SSO单点登录教程记录

    CAS SSO 单点登录记录 作者:刘仁奎 个人网址 程序喵:http://www.ibloger.net / http://www.chengxumiao.net QQ:1056856191 Git ...

  8. 单点登录(一)-----理论-----单点登录SSO的介绍和CAS+选型

    什么是单点登录(SSO) 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 单点登录(Single Sign On),简称为 ...

  9. CAS单点登出,调整CAS源码,实现前后端分离单点登出、清除redis、shiro登录状态

    前端点击"登出"按钮,跳转到CAS的登出. CAS默认配置了单点登出,在登出后,会向所有客户端系统发送这个用户登出的报文. 各客户端系统有责任接收并处理这个用户登出的报文,然后在注 ...

最新文章

  1. 艾伟:FCKeditor 配置、扩展
  2. SAP MM - MIGO界面里的Via Delivery选项
  3. 两大主流IT媒体全程解秘我的“心路历程”
  4. Coursera课程Python for everyone:chapter8
  5. 新星计划·第三季【博文流量密码公开课】
  6. Intent 隐示意图
  7. shell调用hive客户端导致nohup后台进程stopped
  8. 《小米网抢购系统开发实践》读后感
  9. AntTweakBar with OpenGL
  10. Web API-基本认知
  11. c语言荷兰国旗问题算法,荷兰国旗问题
  12. 运算放大器的输入失调电压、失调电压漂移、输入偏置电流、输入失调电流、输入/输出电压范围、噪声指标
  13. 高斯滤波器原理及其实现
  14. 一文搞懂CAN总线协议帧格式
  15. 上交所、深交所、中登结算的接口文档及下载链接
  16. openBravo数据库结构分析
  17. 【小技巧】PDF 转 图片 虚拟打印
  18. 数字手写识别——Java实现KNN算法
  19. 2021南宁周赛!第一期题解
  20. 数字电网白皮书 附下载

热门文章

  1. 怎样在matlab中写技术,rect矩形函数 matlab中怎样编写矩形函数
  2. Office-Tool
  3. 11.23 夯实的django基础
  4. koa2使用ioredis存储session
  5. 炼钢行业皮带无人化管理的问题及解决
  6. apache的url重写
  7. ERROR: Failed to parse XML in D:\MyAPP\XXXX\app\src\main\AndroidManifest.xml
  8. 网络上长说的监听某个端口是什么意思
  9. python+gurobi
  10. 北大软微一年ABCD