前言:为什么要学习JWT?
1、JWT简介
JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;它是分布式服务权限控制的标准解决方案!简而言之就是身份认证
2、 JWT 与RBAC的区别
后台权限服务的数据库设计使用RBAC;
前端项目访问后台微服务的权限校验使用JWT
3、 JWT数据格式
JWT的token包含三部分数据:
-
Header:头部,通常头部有两部分信息:
-
声明类型type,这里是JWT(type=jwt)
-
加密算法,自定义(rs256/base64/hs256)
我们会对头部进行base64加密(可解密),得到第一部分数据
-
-
Payload:载荷,就是有效数据,一般包含下面信息:
-
用户身份信息-userid,username(注意,这里因为采用base64加密,可解密,因此不要存放敏感信息)
-
注册声明:如token的签发时间,过期时间,签发人等
这部分也会采用base64加密,得到第二部分数据
-
-
Signature:base64加密,签名,是整个数据的认证信息。一般根据前两步的数据,再加上服务的的密钥(secret,盐)(不要泄漏,最好周期性更换),通过加密算法生成。用于验证整个数据完整和可靠性
4、总结:
1 JWT是一个有规则的token
2 它由三部分组成:Header(头部).payload(载荷).signature(签名),每部分都是通过base64加密而成的
3 JWT的Header(头部).payload(载荷)是可以解密的(不建议存放敏感信息)