JWT Token 是什么?Header、Payload、Signature 三段结构详解
JSON Web Token(JWT)是 2026 年最广泛使用的身份认证凭据格式。几乎所有现代 Web 应用的登录态管理、API 鉴权和单点登录(SSO)都依赖它。一个 JWT 看起来像这样:
eyJhbGci...(Header).eyJzdWIi...(Payload).SflKxwRJ...(Signature)
它由三段 Base64URL 编码的字符串用 . 连接而成:
- Header(头部):JSON 对象,包含
alg(签名算法,如 HS256、RS256、ES256)和typ(固定为 JWT)。 - Payload(载荷):JSON 对象,包含各种声明(claims)。
sub是用户 ID,iat是签发时间,exp是过期时间,nbf是生效时间,其余为业务自定义字段(角色、组织、权限等)。 - Signature(签名):用密钥对前两段做 HMAC 或 RSA 签名的结果,服务端用它验证 Token 未被篡改。
Header 和 Payload 仅做 Base64URL 编码,不加密——任何人拿到 Token 都能直接解码读取内容。这正是本工具的工作原理:无需密钥,纯粹的本地 Base64 解码。
在线 JWT 解析工具哪个安全?为什么不能随便用 jwt.io
开发者最熟悉的 JWT 解析工具是 jwt.io。但安全团队对它有一个长期的顾虑:你正在把可能包含敏感生产数据的 Token 粘贴到第三方网站。JWT Payload 里通常有用户 ID、角色权限、邮箱地址、组织标识符——这些在严格的数据安全规范下不应该离开受控环境。
即便 jwt.io 本身没有恶意,你的浏览器扩展、公司网络代理或未来的代码变更都可能捕获这些内容。在处理生产环境 Token 时,这不是偏执,而是基本的安全卫生。
MeTool JWT 解码器的设计原则是:Token 绝对不离开你的浏览器。整个解码过程使用浏览器原生的 atob() 函数完成,不发起任何网络请求。你可以打开 DevTools → Network 标签页亲自验证:粘贴 Token 的那一刻,网络面板一片空白。
Payload 字段含义速查:iat、exp、sub、nbf 是什么
JWT 定义了一组标准注册声明(Registered Claims),每个字段都有精确含义:
- sub(Subject):主题,通常是用户 ID 或账号标识,用于唯一标识 Token 的持有者。
- iat(Issued At):签发时间,Unix 时间戳(秒)。表示 Token 创建的时刻,用于追踪令牌年龄。
- exp(Expiration Time):过期时间,Unix 时间戳(秒)。服务端收到 Token 后会检查当前时间是否超过此值,超过则拒绝请求。
- nbf(Not Before):生效时间,Unix 时间戳(秒)。早于此时间的请求不应被接受,常用于预发放 Token。
- iss(Issuer):签发方,标识谁生成了这个 Token,如
https://auth.example.com。 - aud(Audience):受众,标识 Token 的目标接收方,服务端会验证自己是否在 aud 列表中。
- jti(JWT ID):唯一标识符,用于防止 Token 重放攻击。
本工具会将 iat、exp、nbf 自动转换为本地时间并在字段旁显示,省去手动换算 Unix 时间戳的步骤。
如何用 JWT 解码器调试常见认证问题
以下是开发中最频繁的几个 JWT 相关 bug,以及用本工具快速定位的方法:
Token 已过期(401 Unauthorized)
粘贴 Token,查看 Payload 中的 exp 字段。工具会直接显示"已过期"或"有效期至 xx:xx:xx"——比在控制台手算 new Date(exp * 1000) 快得多。
算法不匹配(签名验证失败)
查看 Header 中的 alg 字段,确认与服务端配置的算法一致。HS256 和 RS256 最容易混淆:前者是对称加密(同一个密钥签发和验证),后者是非对称加密(私钥签发、公钥验证)。
角色或权限字段不对(403 Forbidden)
展开 Payload 中的自定义声明(roles、permissions、scope 等),确认用户当前 Token 携带的权限是否符合预期。Token 过期前权限变更不会即时生效——这是 JWT 无状态设计的典型取舍。
嵌套 JSON 字段查看
部分系统会在 Payload 中嵌入对象或数组(如用户 profile、多租户 org 信息)。本工具的 Payload 字段详情区会检测嵌套结构,提供展开/折叠查看,并支持一键复制整个嵌套对象的格式化 JSON。
