SSO 单点登录
约 449 字大约 2 分钟
2024-07-19
单点登录指的是在某一个系统登录后,多个系统共享同一个登录信息,无需多次登录
单系统登录
- 用户输入账号密码
- 服务器校验与返回 token
- token 保存在 session 中,如需要记住登录可以保存在 cookie 中 因为 HTTP 是无状态的,需要生成 token 并在请求时带上以维持登录状态
多系统登录
不同系统使用不同的服务器,因此在服务器端 session 不能够共享 要实现 session 共享,可以将 token 存储在 redis 中模拟 session
实现
- 使用 Cookie,使用加密能够保证 Cookie 安全,
但跨域问题难以解决(跨站 Cookie 能够实现,谷歌就是如此) - 基于 session 的单点登录,独立登录系统,其他系统登录时转跳至登录接口(如 a.com 与 b.com 打开时都转跳至 sso.com,此时利用与 sso.com 的 cookie 就能恢复会话)实现。
方案
CAS(Central Authentication Service)
中心认证服务 也就是上述第二点的解决方案,独立认证服务器,其他的服务通过转跳访问认证服务器验证用户的登录 流程:
- 客户端在认证服务器完成登录,登录状态保存在认证服务器
- 访问新的服务 A,该服务处于未登录状态,转跳至认证服务器
- 认证服务器检测到登录状态,生成一个
Service Ticket
并转跳回服务 A - 服务 A 收到
Service Ticket
参数,带着该参数至认证服务器验证 - 若验证通过则同步登录状态