单点登录SSO: Signgle Sign On

单点登录SSO: Signgle Sign On

Tags
身份鉴权
SSO
CreatedTime
Aug 19, 2022 02:51 AM
Slug
2020-08-19-sso
UpdatedTime
Last updated August 19, 2022

场景

同一公司多个系统,每个系统都需要实现一遍登录校验功能。维护成本、同步成本和开发成本均高。
用户使用系统,也需要多次登录。
SSO(单点登录)就是为了解决多个系统登录授权的问题。它分为单点登录单点注销

介绍

单点登录:用户在子系统 a 登录后,在子系统 b、c 均不用重复登录。
单点注销:用户在子系统 a 注销/过期后,在子系统 b、c 均注销/过期。

整体设计

SSO 是一个独立的微服务,对外提供登录校验接口。
需要 DB 来存储会话令牌信息。
notion image

登录流程

notion image
登录流程如上图所示,注意点:
  • 全局令牌用于 SSO 系统校验,局部令牌用于子系统身份校验(进一步控制资源访问等)
  • 令牌设计可以是 JWT,但是 SSO 需要在 DB 中存储 JWT 是否有效的字段(原因见注销流程)

注销流程

notion image
注销过程如上,注意点:
  • 注销需要在 SSO 系统中更新令牌的有效标识字段。如果采用 JWT,过期时间是写在令牌中,无法在过期前自由控制,所以要在 SSO 中心额外存储令牌字段来标记识别。

参考链接