← 全部工具
数据不出浏览器
JWT Decoder — 在线解码
免费 JWT decoder。粘贴 token,查看 Base64URL 解码后的 header 与 payload。不会验证签名。
Header
{
"alg": "HS256",
"typ": "JWT"
}Payload
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}Signature
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
仅用于调试。切勿把密钥粘贴到不可信网站。
在不信任的前提下读 JWT
JWT 是由点号分隔的三段 Base64URL:描述算法的 header、承载声明(claim)的 payload、以及签名。前两段的解码完全不需要密钥,这也正是绝对不要把机密信息放进 payload 的原因。任何截获 token 的人都能读到声明;签名只能证明签发者是谁。
调试时真正该看的不是「能不能解析」,而是「声明是否仍然有效」。exp 已过期就意味着 token 失效,无论接口怎么回。aud 或 iss 不匹配,往往能解释客户端上看起来莫名其妙的拒绝;对比两个时间戳,通常比加日志更快。
既然解码如此简单,就把 JWT 当作「已签名的文档」,而不是「上锁的盒子」。本工具完全在浏览器里运行,不会上传任何内容,但这个习惯要贯彻到所有场合:不要把生产 token 粘到任何你无法控制的网站上,并尽量使用短有效期加刷新,而不是长期 token。
常见问题
- JWT 是什么?
- JSON Web Token,常用于 API 身份声明。
- 会验证签名吗?
- 不会。本工具只解码,便于检查 claims。
- 数据会上传吗?
- 不会。解码在本地浏览器完成。
- 为什么别人能读到我的 JWT?
- 因为 payload 只是 Base64URL 编码,没有加密。签名保证的是完整性和来源,不是机密性。必须保密的内容应放进加密的 token 格式,更好的做法是服务端存储,用不透明的会话 ID 引用。
- exp 声明是什么意思,设多久合适?
- exp 是过期时间,用 Unix 时间戳(秒)表示,一旦超过,合规的服务端必须拒绝该 token。几分钟到一小时的短有效期能限制 token 被盗后的影响;再配一个刷新 token,那个才是需要长期保护和轮换的部分。
- 这个工具能验证签名吗?
- 不能,而且是刻意不做的。验证需要签名密钥或公钥,浏览器工具无法保管密钥。签名验证应在服务端完成,密钥不出你的基础设施;本页只用于读取声明。