免费在线 JWT 解码器
直接在浏览器中解码并检查 JSON Web Token。查看头部、载荷和声明,并显示可读的过期日期。任何数据都不会发送到服务器。
切勿粘贴包含敏感用户数据的生产环境 token。本工具完全在你的浏览器中运行——任何数据都不会发送到服务器。
Token 检查器
算法
—
类型
—
过期状态
—
头部(Header)
载荷(Payload)
签名(Signature)
签名验证需要密钥,本工具不支持签名验证。
所有解码均在你的浏览器本地完成。你的 token 绝不会被上传、存储或记录。
什么是 JWT?
JSON Web Token(JWT,RFC 7519)是一种紧凑且 URL 安全的方式,用于在双方之间表示声明。它由三部分以点连接的 Base64URL 编码组成——header.payload.signature。最常见的用途是 REST API 的无状态身份验证:登录后,服务器签发一个已签名的 token,客户端在每次请求时发送它,服务器无需保存会话状态即可验证身份。
JWT 结构:头部、载荷、签名
头部(Header)
声明签名算法(alg,例如 HS256、RS256、ES256)和 token 类型(typ),几乎总是 JWT。
载荷(Payload)
包含标准声明和自定义声明。它仅经过 Base64URL 编码,并未加密——任何人都可以读取,因此切勿在此存放机密信息。
签名(Signature)
通过使用密钥或私钥对编码后的头部和载荷进行签名计算得出。它可证明完整性,但没有该密钥便无法验证。
常见 JWT 声明解释
载荷包含声明(claims)——关于 token 的陈述。这些注册声明由 JWT 标准定义:
| sub | Subject — token 所涉及的主体,通常是用户 ID。 |
| iss | Issuer — 标识 token 的签发者。 |
| aud | Audience — token 的预期接收方。 |
| exp | Expiration Time — 在此 Unix 时间戳之后,token 必须被拒绝。 |
| iat | Issued At — token 创建时的 Unix 时间戳。 |
| nbf | Not Before — 在此 Unix 时间戳之前,token 不得被接受。 |
| jti | JWT ID — 唯一标识符,可用于防止 token 重放。 |
JWT 安全最佳实践
切勿在载荷中放置敏感数据——它只是编码而非加密,任何人都能读取。
始终设置 exp 声明并缩短 token 有效期,以降低 token 泄露的影响。
微服务优先使用非对称算法(RS256 或 ES256),使各服务无需共享密钥即可验证。
始终在服务器端验证 iss 和 aud 声明,并拒绝 alg 设为 none 的 token。
切勿在 URL 或日志文件中暴露 token;应在 Authorization 头部中发送并安全存储。
常见问题
不是。标准 JWT 是签名的,而非加密的。头部和载荷仅经过 Base64URL 编码,这意味着任何持有该 token 的人都可以解码并读取其内容。签名仅保证 token 未被篡改——它不会隐藏数据。如果你需要保密性,请使用 JWE(JSON Web Encryption),或永远不要在载荷中放置敏感数据。
不能。验证 JWT 签名需要密钥(HS256)或公钥(RS256/ES256),而这些应仅由签发服务器持有。本工具有意在客户端解码 token 而不进行验证,因此任何密钥都不会离开你的设备。请始终在服务器上验证签名,切勿在浏览器中验证。
HS256 是对称的:同一个密钥用于签名和验证,因此任何能够验证的一方也能伪造 token。RS256 是非对称的:用私钥签名,用单独的公钥验证。RS256 更适合分布式系统和微服务,因为你可以自由共享公钥,同时对签名私钥保密。
exp 声明是以秒为单位的 Unix 时间戳。一个常见错误是用毫秒(13 位)而不是秒(10 位)提供它,这会使过期时间远在过去或未来。服务器之间的时钟偏差也可能导致提前过期——验证时请留出少量余量。使用上方的 Token 检查器,可在原始值旁查看可读的过期日期。