单点登录token与JWT介绍
# 登录
登录:
- 前端输入用户名密码
- 校验用户名密码
- 生成登录标识(
token) - 后端保存
token - 前端保存
token
校验:
- 前端请求时,带上
token,并不是所有的接口都需要带上token一般是放在header里 - 登录拦截器,校验
token(到redis获取token) - 校验成功则继续后面的业务
- 校验失败则回到登录页面
登录标识:就是令牌,就是token,就是一串唯一的字符串
# 单点登录系统
如果你的公司有很多系统,每个系统都单独做一个登录,就会很费事费力,还不能达到统一。一般会再做一个另外的单点登录系统。
比如:现在有A B C三个系统,另外一个单点登录系统为:SSO
第一种方式:
A网站要登录的时候,去访问一下SSO,它提供登录界面和功能,登录直接跳到SSO登录完成后,再回到A
第二种方式:
登录界面,A B C各自都有,但是登录接口是由SSO来提供的,它不提供页面,只提供接口。
注意
单点 != 单个节点
为了支持全部系统的登录功能,所以这个SSO还是要很高效稳定的,所以有可能会布个 10 个节点或 100 个节点
SSO主要功能点:
- 用户管理
- 登录
- 登录校验
- 退出登录
- 或是注册,有可能只提供接口,也可能包含页面
# token 与 JWT
token + redis组合:token是无意义的,我们可以用 MD5 字符串,可以用时间戳等等。
JWT:token是有意义的,是加密的,是包含业务信息的,就是把业务信息加密起来,业务信息基本也就是用户信息,可以被解密出来。它不需要存储到redis。
Maven依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.5.0</version>
</dependency>
1
2
3
4
5
2
3
4
5
它有比较重要的 2 个方法:JwtUtil.sign和JwtUtil.verity
编辑 (opens new window)
上次更新: 2021/12/26, 17:27:45