JWT(JSON Web Token)
本文基于 RFC 7519 国际标准,从基础认知、核心结构、原理流程、算法体系、特性优劣、安全合规、工程实战、避坑指南、横向对比、进阶场景10 个维度,构建 JWT 完整的结构化知识体系,覆盖从入门到生产落地的全链路内容。
一、基础认知层:定义与核心边界
1. 核心定义
JWT(JSON Web Token)是 RFC 7519 定义的开放行业标准,用于在网络环境中以紧凑、自包含、可验证的方式,在多方之间安全传输 JSON 格式的声明信息。
- 核心本质:基于 JSON 的无状态令牌规范,核心特性是自包含与无状态
- 标准家族:JWT 是统称,包含 JWS(签名令牌,RFC 7515)和 JWE(加密令牌,RFC 7516)两大实现分支,日常所说的 JWT 默认指 JWS
2. 诞生背景
解决传统 Session-Cookie 认证机制的核心痛点:
- 分布式系统 Session 共享复杂度高,水平扩展受限
- Cookie 受同源策略限制,跨域认证实现困难
- 移动端/小程序/IoT 设备对 Cookie 适配性差
- 存在 CSRF 攻击、Session 劫持等安全风险
3. 适用与不适用场景
| 核心适用场景 | 不适用场景 |
|---|---|
| 前后端分离架构的身份认证 | 需要频繁撤销令牌、强制全平台登出的场景 |
| 微服务/分布式系统的跨服务认证 | 超大量用户、权限实时动态变更的核心系统 |
| 跨域/跨机构的授权与信息交换 | 需要存储大量敏感信息的场景 |
| 移动端 APP/小程序/IoT 设备认证 | 需要精准统计在线用户、会话管理的场景 |
二、核心结构层:JWT 的标准格式与字段规范
标准 JWT(JWS)采用三段式.分隔结构,格式为:[Header].[Payload].[Signature],每一段均采用Base64URL 编码(URL 安全的 Base64,替换 +//、去除 = 填充,非普通 Base64)。
1. Header(头部)
JSON 对象,描述 JWT 的元数据,Base64URL 编码后为第一段字符串,核心作用是声明令牌类型与签名算法。
| 字段 | 必选 | 含义与规范 |
|---|---|---|
| alg | 是 | 签名/加密算法,如 HS256、RS256、ES256,none表示无签名(生产环境绝对禁用) |
| typ | 否 | 令牌类型,固定值JWT |
| kid | 否 | 密钥 ID,多密钥场景下用于快速匹配验签密钥 |
| cty | 否 | 内容类型,嵌套 JWT 时固定为JWT |
示例:
{


