工具

免费在线 JWT 解码器

直接在浏览器中解码并检查 JSON Web 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 检查器,可在原始值旁查看可读的过期日期。