JWT(JSON Web Token)是一种基于 JSON 的开放标准(RFC 7519),用于安全地在用户和服务器之间传递信息。JWT 被广泛用于认证和信息交换,尤其是在单点登录(SSO)和微服务架构中。它主要由三部分组成:Header(头部)、Payload(负载) 和 Signature(签名)。
1. JWT 结构
JWT 由三部分组成,每部分使用 Base64 编码,并通过 "." 分隔:
-
Header(头部):
- 通常由两部分组成:
alg
:指定签名算法(如 HMAC SHA256 或 RSA)。typ
:表示令牌的类型,通常为JWT
。
头部示例:
{ "alg": "HS256", "typ": "JWT" }
- 通常由两部分组成:
-
Payload(负载):
- 包含声明(Claims)。声明是一组键值对,通常用于存储用户信息、权限、令牌的过期时间等。
- 声明分为三种类型:
- 注册声明(Registered Claims):预定义的标准字段,例如
iss
(发行者),exp
(过期时间),sub
(主题),aud
(受众)等。 - 公共声明(Public Claims):可以自定义的字段,避免冲突的标准做法是使用 URI(如
example.com
)。 - 私有声明(Private Claims):自定义的声明,只有发送者和接收者理解。
- 注册声明(Registered Claims):预定义的标准字段,例如
示例:
<