JWT(JSON Web Token)的数据结构

JWT 的数据结构是 : A.B.C
A - header 头信息
B - payload (有效荷载,用于记录用户非隐私数据)
C - Signature 签名

header

数据结构: {“alg”: “加密算法名称”, “typ” : “JWT”}
alg 是加密算法定义内容,如: HMAC SHA256 或 RSA
typ 是 token 类型,这里固定为 JWT。

payload

在 payload 数据块中一般用于记录实体(通常为用户信息)或其他数据的。主要分为三部分,分别是:已注册信息(registered claims),公开数据(public claims),私有数据(private claims)。
常用的已注册信息: iss(发行者), exp(到期时间), sub(主题), aud(受众)
公开数据一般都会在 JWT 注册表中增加定义,避免和已注册信息冲突。
公开数据和私有数据均可由程序员任意定义。
注意: 即使 JWT 有签名加密机制, 但是 payload 内容都是明文记录, 除非记录的是加密数据, 否则不排除泄露隐私数据的可能。 不推荐在 payload 中记录任何敏感数据。

Signature

签名信息。 这是一个由开发者提供的信息。 是服务器验证的传递的数据是否有效安全的标准。 在生成 JWT 最终数据的之前,先使用 header 中定义的加密算法将 header 和 payload 进行加密, 并使用点进行连接。 如: 加密后的 header .加密后的 payload。 再使用相同的加密算法, 对加密后的数据和签名信息进行加密, 得到最终结果。

JWT执行流程

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_33404263/article/details/106303117