单点登录模式

1. 什么是单点登录

比如有一家公司,他业务线很多,有小游戏,有商城,有小程序,导致有很多系统,他不可能为每一个系统做一套用户管理,因为这些系统都是属于公司的,用户是相通的,他就会把用户系统抽离出来,形成一个认证中心。用户要登录,注册,修改用户信息都到这个认证中心来,专门来管理用户的。用户对自身的所有操作都在一个点,这就叫单点。这些用户需要做的登录,就是单点登录。

2. 怎么实现单点登录

实现单点登录的模式有 Session + Cookie、TOKEN、TOEKN + RFRESHTOKEN 这三种。

实现步骤:1. 用户到认证中心登录,认证中心有一个 Session 表,记录键值对,键是 sid,值是用户信息。登录成功往这个表记录一条键值对。只要 Session 表格有这个记录,证明登录成功。2. 把 sid 用 Cookie 给用户返回。用户访问子系统时把 sid 带给子系统。3. 子系统根据 sid 判断有没有登录,但是子系统判断不了,他没有 Session 表格,就需要发给认证中心,让认证中心判断。4. 认证中心去 Session 表查 sid,查到了,就是登录,没查到,就是没登陆,或者登录过期的。这就是 Session + Cookie 模式。

优点:认证中心有很强的控制力,比如用户有违规操作,我们要让他下线,直接从 Session 表格里把他删了,子系统再拿 sid 来查,就是查不到的,就需要通知用户重新登录,如果在加上黑名单控制,直接用户就是登录不了了。很多大厂要保证对用户的绝对控制,就是这种模式。

缺点:但是这种模式有个缺点,就是烧钱。用户量大的应用,同时在线几千万人,上亿人,认证中心的压力就很大,各种子系统发给他认证,表格也会变得非常大,还要做 Session 集群。认证中心挂了,所有系统都要完蛋,还得做容灾。

2.2 Token 模式

实现步骤:1. 用户去认证中心登录,登录成功后,不再向 Session 表插入键值对,生成一个不能被篡改的字符串作为 token 发给用户,token 格式一般是 JWT。2. token 发给用户后,用户就存起来,接下来后,认证中心就不管了,用户访问子系统就携带这个 token,子系统自行认证 token。

优点:便宜,认证中心压力小。

缺点:失去了对用户的控制。比如有一天,你希望一个用户下线,咋办,你最多只能让他不能再登录了,但是你之前发给他的 token 还是有效的,仍然是可以向子系统发送请求的。这时你必须去通知子系统,不能让他访问了,一个子系统还好,如果有很多,就会很麻烦。

2.3 Token + RfreshToken 双 token 模式

实现步骤:1. 用户在认证中心登录,登录成功后,认证中心给他两个 token,一个是所有子系统都可以自行认证的 token,另一个是只有认证中心才认识的 token,叫刷新 token,两个 token 都存起来。但是第一个 token 过期时间非常非常短,比如 10 分钟,而第二个 token 过期时间就长一点,一个月。2. 用户在请求子系统时,带第一个 token,去认证,有效就可以用。3. 如果 token 失效了,我们还有一个刷新 token,带着刷新 token 去访问认证中心,然后认证中心再给你一个 token,再用这个新 token 去请求子系统。

这个模式的意义:要让用户每隔一小段时间来一次,这个作用是方便我们控制,比如我们要让一个用户下线,虽然我们没办法让他立即下线,但是过一会他要来请求新 token,我们不给了,那他的 token 就是失效的,就访问不了子系统了。

优点:便宜,还能对用户有较强的控制力。

相关推荐
Moment8 小时前
Vibe Coding 时代,到底该选什么样的工具来提升效率❓❓❓
前端·后端·github
IT_陈寒10 小时前
SpringBoot性能飙升200%?这5个隐藏配置你必须知道!
前端·人工智能·后端
小时前端10 小时前
React性能优化的完整方法论,附赠大厂面试通关技巧
前端·react.js
Nicko11 小时前
Jetpack Compose BOM 2026.02.01 解读与升级指南
前端
小蜜蜂dry11 小时前
nestjs学习 - 控制器、提供者、模块
前端·node.js·nestjs
优秀稳妥的JiaJi11 小时前
基于腾讯地图实现电子围栏绘制与校验
前端·vue.js·前端框架
前端开发呀11 小时前
从 qiankun(乾坤) 迁移到 Module Federation(模块联邦),对MF只能说相见恨晚!
前端
没想好d12 小时前
通用管理后台组件库-10-表单组件
前端
恋猫de小郭12 小时前
你用的 Claude 可能是虚假 Claude ,论文数据告诉你,Shadow API 中的欺骗性模型声明
前端·人工智能·ai编程
_Eleven12 小时前
Pinia vs Vuex 深度解析与完整实战指南
前端·javascript·vue.js