最近在公司做了一个单点登录的需求,由于之前没做过,花了一点时间也走了一点弯路。但是,了解了实现的原理和过程过后,就对单点登录的设计思想更明白了。
下面就简单总结了下这个思考过程。
一、单点登录
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。
二、单点登录背景
一个大的应用系统内部,有很多的子系统,每个子系统都有相应的一套登录认证机制,对用户来说,访问每一个系统都登录一次太麻烦。于是使用一个统一的单点登录认证中心,通过这个认证中心,达到一次登录即可访问所有系统的功能,避免重复登录。
三、单点登录原理
通过统一的认证中心,给应用系统提供一个公共的访问令牌token,各子系统通过这个令牌去获取登录账号与本地账号比较是否一致。
四、单点登录实现
- 在统一的登录入口,输入用户密码登录,会向服务端发送请求
- 请求里包含登录相关的cookie,来标识登录请求和存放登录信息
- 通过拦截器,拦截请求,根据cookie的基本信息,获取到对应的登录凭证token
- 通过token,获取到登录账号信息
- 退出过程类似,发送一个退出请求,销毁掉相应的cookie,和本地存储的账号信息
五、单点登录认证框架
- Shiro
六、重要知识点
- 跨域访问,Jsonp格式数据
- cookie和session机制
- 拦截器使用很灵活
- 认证过程和token令牌
- 复杂应用系统架构