Skip to content

SSO 单点登录

约 449 字大约 2 分钟

2024-07-19

单点登录指的是在某一个系统登录后,多个系统共享同一个登录信息,无需多次登录

单系统登录

  1. 用户输入账号密码
  2. 服务器校验与返回 token
  3. token 保存在 session 中,如需要记住登录可以保存在 cookie 中 因为 HTTP 是无状态的,需要生成 token 并在请求时带上以维持登录状态

多系统登录

不同系统使用不同的服务器,因此在服务器端 session 不能够共享 要实现 session 共享,可以将 token 存储在 redis 中模拟 session

实现

  1. 使用 Cookie,使用加密能够保证 Cookie 安全,但跨域问题难以解决(跨站 Cookie 能够实现,谷歌就是如此) image
  2. 基于 session 的单点登录,独立登录系统,其他系统登录时转跳至登录接口(如 a.com 与 b.com 打开时都转跳至 sso.com,此时利用与 sso.com 的 cookie 就能恢复会话)实现。

方案

CAS(Central Authentication Service)

中心认证服务 也就是上述第二点的解决方案,独立认证服务器,其他的服务通过转跳访问认证服务器验证用户的登录 image 流程:

  1. 客户端在认证服务器完成登录,登录状态保存在认证服务器
  2. 访问新的服务 A,该服务处于未登录状态,转跳至认证服务器
  3. 认证服务器检测到登录状态,生成一个Service Ticket并转跳回服务 A
  4. 服务 A 收到Service Ticket参数,带着该参数至认证服务器验证
  5. 若验证通过则同步登录状态