JWT 解码
粘贴 JWT 令牌,点“解码”查看头部和载荷。本工具只做解码,不验证签名;令牌只在你的浏览器里处理,不会上传。
使用限制
- 不验证签名。验证需要密钥或公钥,而且应当由服务端完成;这里显示“已过期”“未过期”只是按你电脑当前时间对比
exp的结果。 - 时间戳按秒计算(JWT 规范);你本地时钟不准时,过期判断也会不准。
- 只支持常见的三段式 JWT(JWS)。加密的 JWE(五段)无法解开内容。
- 载荷里数字超过 JavaScript 能精确表示的范围(约 16 位以上整数)时,显示的数字可能有误差。
只解码,不验证签名:能解开不代表令牌可信,任何人都能伪造内容。判断令牌是否有效必须由服务端用密钥验证。
头部(Header)
载荷(Payload)
时间声明
常见声明说明
签名(原样显示,未验证)
使用方法
- 把令牌粘贴到输入框。前面带
Bearer、两边带引号、中间有换行都没关系,会自动去掉。 - 点“解码”,下面会分别显示头部、载荷、签名,以及
exp(过期)、iat(签发)、nbf(生效)换算成的日期和是否过期。 - 没有令牌想先看看效果?点“填入测试令牌”,这是用测试密钥生成的示例,不是任何真实账号的令牌。
常见问题
JWT 是什么结构?
三段用点号连接:头部(算法、类型)、载荷(用户信息和时间等声明)、签名。前两段只是 base64url 编码后的 JSON,所以谁都能读出来,不要在里面放密码这类机密。
为什么直接用 atob 解码会出现乱码?
JWT 用的是 base64url(- _,无 =),并且内容是 UTF-8。直接 atob 会把中文拆成乱码。本工具先还原成字节,再按 UTF-8 读取,所以“测试用户”这样的中文能正常显示。
alg 是 none 有什么风险?
表示令牌声称自己没有签名。如果服务端接受这样的令牌,任何人都可以随便编一个冒充别人,所以服务端必须拒绝。本工具遇到时会提示。
令牌会被上传吗?
不会。解码在本页完成,不会向任何服务器发送令牌。但令牌等同于登录凭证,不要把真实的、仍有效的令牌发给别人或贴到不信任的地方。