如何设计一个单点登录系统(2)?
中,我着重从单点登录系统的由来,单点登录的概念,一个好的单点登录系统应该具备的特点以及本人亲自实现的一个单点登录系统几方面做了些介绍,这篇文章主要介绍下具体实现方案。
图1.1为传统SSO实现方案中登录流程时序图
图1.2为传统SSO实现方案中登出流程时序图
接下来给大家解释解决跨域问题的方案:
图2.1为支持跨域的SSO实现方案-登录流程时序图
图2.2为支持跨域的SSO实现方案-登出流程时序图
此方案中sso服务端需要做以下几件事情:
-
提供登录页
-
生成token,创建全局会话
-
配置各系统名的回调地址,供登录成功或者全局会话存在时重定向使用
-
记录各token绑定的用户信息
-
记录各token绑定的系统名称信息,作为注销时回调哪些系统注销接口的根据
-
提供注销页
-
配置各系统注销的回调接口,供注销时回调绑定的系统
-
注销成功后回调
-
认证token有效性
接入方需要做以下事情:
-
发现未登录时重定向到sso服务端
-
提供登录成功回调接口,供登录成功或者存在全局会话时回调
-
提供登出接口
-
登录校验
-
sso服务端回调后根据token去服务端认证token的有效性
由于篇幅有限,这篇文章只讲到各个模块的职责已经登录,登出的时序图及说明,具体代码结构及实现到下一篇再详细介绍。