文章目录加载中

SSO:单点登录

# SSO: Signgle Sign On

# 场景

同一公司多个系统,每个系统都需要实现一遍登录校验功能。维护成本、同步成本和开发成本均高。

用户使用系统,也需要多次登录。

SSO(单点登录)就是为了解决多个系统登录授权的问题。它分为单点登录单点注销

# 介绍

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

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

# 架构设计

SSO 是一个独立的微服务,对外提供登录校验接口。

需要 DB 来存储会话令牌信息。

# 流程

登录流程如上图所示,注意点:

  • 全局令牌用于 SSO 系统校验,局部令牌用于子系统身份校验(进一步控制资源访问等)

  • 令牌设计可以是 JWT,但是 SSO 需要在 DB 中存储 JWT 是否有效的字段(原因见注销流程)

注销过程如上,注意点:

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

# 参考链接

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog