JWT数据结构(二)
一、JWT的数据结构:
形如 xxxxx.yyyyy.zzzzz 有三部分组成,每部分用英文句号连接
即:header(标头).payload(负载).signature(签名)
二、Header(标头部分)
JWT第一部分,是一个JSON 对象, 描述JWT的元数据,通常如下所示。
{ "alg": "HS256", "typ": "JWT" }
表头的组成:
typ属性(type):令牌的类型,JWT 令牌统一写为JWT
alg属性(algorithm):所使⽤的签名算法 如:HMAC、SHA256、RSA
最后,使用Base64 URL编码算法将上述JSON对象转换为字符串保存。
三、payload(负载部分)
JWT第二部分,是一个JSON对象,描述一个声明数据,声明通常是用户有关实体对象或者其他数据。通常如下所示:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
一般是在这个部分定义私有字段: 例如{"userId":"123456","userName":"jack","isAdim":"true"}
其中payload官方规定了7个字段,如下:
iss (issuer):发行人
exp (expiration time):过期时间
sub (subject):主题
aud (audience):用户
nbf (Not Before):生效时间(在此时间之前不可用)
iat (Issued At):发布时间
jti (JWT ID):编号(用户标识该JWT)
注意:JWT 默认是不加密的,任何人都可以解读其内容,所以不要把机密信息放在这个部分,以防信息泄露。 如:用户的密码就不能放在这里
最后,使用Base64 URL编码算法将上述JSON对象转换为字符串保存。
四、signature(签名部分)
JWT的第三部分,是对前两部分进行签名(签名可以理解为:加盐),防止数据的篡改。通常如下所示:
HMACSHA256 (base64Ur1Encode(header) + "." + base64Ur1Encode(payload) , secret);
secret:密钥(密钥绝对⾃⼰保管好,签名值同样做Base64编码,该secret仅仅保存在后端服务器中,不能泄露给客户端)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)