前言
因系统逐渐增多,各个业务系统间无法共享用户状态,每个系统都需要用户登录。这对于用户来说很不友好,于是需要搭建一个SSO单点登录服务器,来做统一的登录、注销。
写这个系列的文章有两个目的:
- 记录自己的学习过程,并分享给大家
- 网上关于使用 Apereo CAS 来做单点登录的文章比较少,故想分享给大家
一、了解SSO单点登录
定义
单点登录全称 Single Sign On (SSO)。SSO的定义是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
单点登录的目的就是将各个子系统中的用户认证打通,集中到SSO服务中来实现。
如下图所示:
用户在A系统中登陆后,就可以直接访问系统B、C,无须再次登录
现有方案
目前单点登录有两种比较流行的方案:.
- 基于Cookie的Session共享
- CAS中央认证服务
1. 基于Cookie的Session共享
有一个顶级域名 test.cn
业务系统A:a.test.cn
业务系统B:b.test.cn
业务系统C:c.test.cn
用户首次发起登录请求
此处以首次访问业务系统A为例子,流程如下所示:
解释:
cookie:主要用来在前端存储SessionId(如为tomcat则key为JSessionId)
Session:会话中会保存用户的基本信息以及登录状态等
用户访问其它业务系统(第二次)
以第二次访问业务系统B为例,流程如下所示:
因为第一次已经登录过了,在前端中已经保存了顶级域名对应的SessionId
在访问子域名时,携带此SessionId就可以通过校验,进行正常的业务流程了
2. CAS中央认证服务
CAS,Central Authentication Service—中央认证服务,是Yale 大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的SSO解决方案(官方文档)
认证流程
简易的认证流程如下所示:
简单来说就是CAS分为服务和客户端两个部分
tips:事件原因,详细的认证流程下一篇再细述
优势
CAS可以实现多域名间用户信息共享,比如CAS服务部署在test1.cn,应用系统A部署再test2.cn,应用系统C部署在test3.cn
二、总结
感谢看到最后,非常荣幸能够帮助到你~♥