单点登录教程(三)单点注销流程分析

作者:蓝雄威,叩丁狼教育高级讲师。原创文章,转载请注明出处。

一、前言

单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用下面的图来说明:
单点登录教程(三)单点注销流程分析_第1张图片

步骤分析:
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信息
这张表存储的是究竟有哪些子系统在统一认证中心注册了.
在单点登录的时候拿到注册子系统的集合,依次调用子系统的登出方法.

单点登录教程(三)单点注销流程分析_第2张图片
图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

单点登录教程(三)单点注销流程分析_第3张图片
图03:当两个系统都已经在统一认证中心注册好之后,数据库表t_token中存储的信息如下图所示.

单点登录教程(三)单点注销流程分析_第4张图片
图04:我们在CRM系统中点击注销按钮,这个注销按钮的地址其实指向
http://www.sso.com/logout,访问的是统一认证中心的注销方法.

单点登录教程(三)单点注销流程分析_第5张图片
图05:浏览器发出请求http://www.sso.com/logout,浏览器会根据请求的域名找到本地的sso.com目录cookie,并把cookie里面的信息一并带到服务器.d
通过cookie中的JSESSION可以找到统一认证中心的会话对象.

单点登录教程(三)单点注销流程分析_第6张图片
图06:拿到统一认证中心的会话对象之后
1.取出会话中的令牌信息token,通过令牌信息在表t_clinet_info中找到之前注册的子系统集合.
2.遍历子系统集合,依次调用子系统的登出方法,并把JSESSIONID带上.

单点登录教程(三)单点注销流程分析_第7张图片
图07:子系统接受到请求之后,根据JSESSIONID找到对应的会话对象进行销毁.

单点登录教程(三)单点注销流程分析_第8张图片
图08:需要把令牌信息从数据库中删除.

单点登录教程(三)单点注销流程分析_第9张图片
图09:清除全局会话对象.

单点登录教程(三)单点注销流程分析_第10张图片
图10:响应统一认证中心的登陆页面

单点登录教程(三)单点注销流程分析_第11张图片

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

单点登录教程(三)单点注销流程分析_第12张图片

你可能感兴趣的:(超全SSO系统)