📅  最后修改于: 2023-12-03 14:43:37.761000             🧑  作者: Mango
JWT(JSON Web Token)是一种用于身份验证的开放标准,它是基于 JSON 的轻量级协议。JWT 由三部分组成:header(头部)、payload(负载)和 signature(签名),它们三个之间用点号连接,组成一个完整的 JWT。
JWT 的 Header 部分代表着该 JWT 的类型以及使用的算法。Header 通常由两部分信息组成:
{
"alg": "HS256",
"typ": "JWT"
}
alg
:指定生成签名时使用的算法typ
:表示该 JWT 的类型,一般都是 JWTJWT 的 Payload 部分包含了可读的信息,如用户身份、权限等信息。Payload 也是由 JSON 对象组成,它可以自定义任何属性,一般包含三类信息:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
sub
:Subject,代表这个人或这个 JWT 的唯一标识,一般是用户 ID。iat
:Issued At,表示 JWT 的签发时间,一般使用 Unix 时间戳表示。JWT 的 Signature 部分是整个 JWT 的保护部分,它防止了 JWT 被篡改。Signature 使用 Base64 编码,它由三部分组成:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
其中:
header
:Base64 编码的 Header 信息payload
:Base64 编码的 Payload 信息secret
:应用程序的密钥JWT 的生成和验证一般由应用程序的后端完成。应用程序生成 JWT 的流程如下:
JWT 的验证流程如下:
JWT 是一种轻量级身份验证协议,它由 Header、Payload 和 Signature 三部分组成。应用程序可以使用 JWT 签发认证令牌,用户在提交请求时,将令牌放在请求头中,服务端收到请求时,解析令牌即可判断用户身份和权限。JWT 的无状态、安全和可装载更多信息等优点使得它成为了一种全新的身份验证方式。