定义
多个应用系统中,只需要登录一次就可以访问多个应用系统
单点登录即sso(single sign on)需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。
相同域下的单点登录
sso.a.com
app1.a.com
app2.a.com
问题:
- cookie不能跨域名:
cookie设置为顶域,即a.com这样三个域名都可以用这个cookie - session在自己的范围内不能共享
打开session共享,Spring-Session
不同域下的单点登录
实现
sso-client
- 拦截子系统未登录用户请求,跳转至sso认证中心
- 接收并存储sso认证中心发送的令牌
- 与sso-server通信,校验令牌的有效性
- 建立局部会话
- 拦截用户注销请求,向sso认证中心发送注销请求
- 接收sso认证中心发出的注销请求,销毁局部会话
sso-server - 验证用户的登录信息
- 创建全局会话
- 创建授权令牌
- 与sso-client通信发送令牌
- 校验sso-client令牌有效性
- 系统注册
- 接收sso-client注销请求,注销所有会话
具体可见:https://www.cnblogs.com/ywlaker/p/6113927.html