JWT 解码工具
把令牌按三段拆开,对头部与载荷做 base64url 解码并列出全部声明,同时判断有效期是否合理。本工具从不校验签名,页面上也会持续提醒这一点。
仅解码,未验证 这里从不校验签名,所以能读懂载荷并不代表它由谁签发,也不代表可信。
| 声明 | 值 |
|---|
| 声明 | 值 |
|---|
载荷 JSON
尚未解码任何内容。
使用方法
- 把令牌粘贴到「令牌」输入框,可带 Bearer 前缀与多余空白,粘贴后会自动开始解码。
- 点击「解码」,查看「头部声明」与「载荷声明」两张表;exp、iat、nbf 除原始数字外,还会给出带时区名的本地日期时间以及类似「5 分钟前已过期」的相对描述。
- 阅读状态行给出的有效期结论与原因,然后在右侧「载荷 JSON」区滚动查看完整声明,点击「复制载荷 JSON」即可取走格式化后的内容。
- 手头没有令牌时,点击「生成一个示例令牌」载入一份 alg 为 none 的演示令牌熟悉界面,再用「清空」重新开始。
常见问题
这能验证我的令牌是否可信吗?
不能,本工具也不做这件事。验证签名需要对称密钥或公钥,而任何拿到字符串的人都能把头部和载荷解码出来。这里只展示 base64url 解码结果,你可以从 alg、kid 声明确认应该用哪种算法校验,然后在自己的服务端用真实密钥完成验签。
为什么别的解码工具里我的中文声明是乱码?
多数简陋实现只用 atob,它按字节返回字符,会破坏一切多字节 UTF-8,「张三」这类声明因此变成乱码。本工具先还原字节,再交给 TextDecoder 按 utf-8 解码,因此中文、表情符号和带音标的字母都能正常显示。
状态行的有效期结论是什么意思?
exp 是过期时刻,iat 是签发时刻,nbf 是生效时刻。当 exp 尚未到期且 nbf 已过,状态为正常;已过期标记为错误;若三个声明都没有、或只有 iat 而没有 exp(意味着令牌永不过期),则给出警告。这些只是对数字的读取,签名未校验,不能证明令牌可信。