互联网|10张流程图+部署图,讲透单点登录原理与简单实现( 三 )
1. 局部会话存在 , 全局会话一定存在
2. 全局会话存在 , 局部会话不一定存在
3. 全局会话销毁 , 局部会话必须销毁
你可以通过博客园、百度、csdn、淘宝等网站的登录过程加深对单点登录的理解 , 注意观察登录过程中的跳转url与参数
2、注销
单点登录自然也要单点注销 , 在一个子系统中注销 , 所有子系统的会话都将被销毁 , 用下面的图来说明
本文插图
so认证中心一直监听全局会话的状态 , 一旦全局会话销毁 , 监听器将通知所有注册系统执行注销操作
下面对上图简要说明
1. 用户向系统1发起注销请求
2. 系统1根据用户与系统1建立的会话id拿到令牌 , 向sso认证中心发起注销请求
3. sso认证中心校验令牌有效 , 销毁全局会话 , 同时取出所有用此令牌注册的系统地址
4. sso认证中心向所有注册系统发起注销请求
5. 各注册系统接收sso认证中心的注销请求 , 销毁局部会话
6. sso认证中心引导用户至登录页面
四、部署图
单点登录涉及sso认证中心与众子系统 , 子系统与sso认证中心需要通信以交换令牌、校验令牌及发起注销请求 , 因而子系统必须集成sso的客户端 , sso认证中心则是sso服务端 , 整个单点登录过程实质是sso客户端与服务端通信的过程 , 用下图描述
本文插图
sso认证中心与sso客户端通信方式有多种 , 这里以简单好用的httpClient为例 , web service、rpc、restful api都可以
五、实现
只是简要介绍下基于java的实现过程 , 不提供完整源码 , 明白了原理 , 我相信你们可以自己实现 。 sso采用客户端/服务端架构 , 我们先看sso-client与sso-server要实现的功能(下面:sso认证中心=sso-server)
sso-client
1. 拦截子系统未登录用户请求 , 跳转至sso认证中心
2. 接收并存储sso认证中心发送的令牌
3. 与sso-server通信 , 校验令牌的有效性
4. 建立局部会话
5. 拦截用户注销请求 , 向sso认证中心发送注销请求
6. 接收sso认证中心发出的注销请求 , 销毁局部会话
sso-server
1. 验证用户的登录信息
2. 创建全局会话
3. 创建授权令牌
4. 与sso-client通信发送令牌
5. 校验sso-client令牌有效性
6. 系统注册
7. 接收sso-client注销请求 , 注销所有会话
接下来 , 我们按照原理来一步步实现sso吧!
1、sso-client拦截未登录请求
java拦截请求的方式有servlet、filter、listener三种方式 , 我们采用filter 。 在sso-client中新建LoginFilter.java类并实现Filter接口 , 在doFilter()方法中加入对未登录用户的拦截
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request HttpServletResponse res = (HttpServletResponse) response HttpSession session = req.getSession() if (session.getAttribute("isLogin")) { chain.doFilter(request, response) return } //跳转至sso认证中心 res.sendRedirect("sso-server-url-with-system-url")}
2、sso-server拦截未登录请求
拦截从sso-client跳转至sso认证中心的未登录请求 , 跳转至登录页面 , 这个过程与sso-client完全一样
3、sso-server验证用户登录信息
用户在登录页面输入用户名密码 , 请求登录 , sso认证中心校验用户信息 , 校验成功 , 将会话状态标记为“已登录”
推荐阅读
- Spacex|卫星互联网轨道资源稀缺,中国航天如何与国际卫星界大亨竞争?
- 互联网|建行“数字人民币钱包”已上线 仅限部分测试地区开通
- 行业互联网|大华股份与大连量天科技签署战略合作协议
- 行业互联网|原创 估值2000亿!刘强东手中这张“独角兽”,成立时间竟然不到两年?
- 行业互联网|李炳忠15点正式官宣,realme成立2年,稳居全球第七!
- 互联网|同城跑腿配送生意好做吗?需要注意什么?
- 互联网|招生部门公号也有高仿?!微信回应:已清除三千多个
- 互联网|马云最重要一次蜕变,高考失利后蹬三轮遇见他,改变了其一生轨迹
- 行业互联网|中兴通讯发布2020年半年度报告 营业收入达472亿元
- 互联网乱侃秀|5nm芯片,有EDA软件设计费4000万美元,没有EDA要77亿美元?
