JWT解码器 - 在线解码并验证JSON Web令牌
粘贴JSON Web令牌,即时解码头部和载荷,查看标准声明,并可选择验证HMAC-SHA-256签名。
所有操作都在浏览器本地完成:解码器拆分令牌,对前两个片段进行Base64URL解码,并格式化显示JSON。任何内容都不会上传。
JWT解码器 - 在线解码并验证JSON Web令牌
粘贴JSON Web令牌,即时解码头部和载荷,查看标准声明,并可选择验证HMAC-SHA-256签名。
隐私:令牌不会离开浏览器。解码和验证完全在设备上进行,不会记录或发送到服务器。
工作原理:JWT由三个以点分隔的Base64URL片段组成——header.payload.signature。解码不需要密钥,只有验证签名时才需要。
关于JWT解码器
JSON Web令牌(JWT)是RFC 7519定义的一种紧凑、适合URL的方式,用于在双方之间传递已签署的声明。在现代Web开发中,JWT无处不在:OAuth 2.0和OpenID Connect的访问令牌与ID令牌、单页应用的会话Cookie、服务间身份验证、密码重置链接以及Webhook签名。每个JWT都由三个以点连接的Base64URL编码片段组成。第一段是头部,一个说明签名算法和令牌类型的小型JSON对象。第二段是载荷,包含实际声明的JSON对象——谁签发了令牌、令牌针对谁,以及何时过期。第三段是根据前两段计算出的签名。
此JWT解码器会拆分令牌、解码头部和载荷,并将两者格式化为易读的JSON。它还会提取载荷中的注册声明——签发者、主题、受众、过期时间、签发时间、生效时间和令牌ID,并将时间类声明同时显示为原始Unix时间戳和易读的UTC日期。状态行会立即告诉你令牌是否已过期、尚未生效或完全没有过期时间;当API突然返回401时,这是开发者最常需要检查的项目。
解码JWT不需要密钥,因为Base64URL是编码而不是加密:任何持有令牌的人都能读取其内容。因此,绝不要把密码或其他敏感数据放入JWT载荷。验证则需要密钥。如果令牌使用对称的HMAC-SHA-256算法签署,你可以在可选验证区域粘贴共享密钥,工具会通过浏览器内置的Web Crypto API重新计算签名,并与令牌中的签名比较。匹配表明令牌由持有该密钥的人生成且未被修改。
当你粘贴生产系统中的真实令牌时,隐私非常重要。此工具的所有工作都在浏览器标签页内完成:令牌和密钥在本地JavaScript中处理,从不通过网络发送、存储或记录。关闭标签页后它们就消失了。请注意限制:RS256或ES256等非对称算法需要签发者的公钥,此处无法验证;签名检查也不能说明是否应信任签发者——请始终在后端验证签发者和受众。
典型用途包括调试登录流程、检查访问令牌被拒的原因、确认令牌授予的作用域或角色、比较不同环境中的令牌,以及学习JWT格式。
JWT解码器示例
这些示例展示解码器对常见令牌和输入的报告结果。
| 输入 | 解码器输出 | 备注 |
|---|---|---|
| 来自身份提供商的三段式令牌 | 格式化的头部和载荷JSON、声明表以及过期状态行 | 头部中的alg字段会告诉你令牌使用了哪种算法签署。 |
| exp声明为1516242622的令牌 | exp显示为2018-01-18 02:50:22 UTC,并标记为已过期 | 时间声明是以秒为单位的Unix时间戳;解码器会将其转换为UTC日期。 |
| 只有两个以点分隔的片段,例如截断的复制粘贴 | 错误:JWT必须正好包含三个片段 | 从日志或请求头复制时被截断,是最常见的解码失败原因。 |
| 有效的HMAC签署令牌和正确的共享密钥 | 浏览器内检查后显示签名验证成功消息 | 只要修改载荷中的一个字符,同一密钥也不再匹配。 |
如何解码JWT
- 从Authorization请求头、Cookie或日志输出中复制令牌——复制完整的xxxxx.yyyyy.zzzzz字符串,不要包含“Bearer ”前缀。
- 将其粘贴到令牌字段并点击“解码”,查看头部、载荷、注册声明和过期状态。
- 查看声明表:exp、iat和nbf同时显示原始秒数和UTC日期,便于立即发现过期问题。
- 可选:粘贴共享密钥并点击“验证签名”,确认HMAC-SHA-256令牌真实有效。
- 完成后点击“清除”,从页面删除令牌和密钥。
JWT解码器常见问题
把真实JWT粘贴到此工具安全吗?
安全。解码和签名验证完全在浏览器中通过本地JavaScript和Web Crypto API运行。令牌和密钥不会传输、存储或记录。若对生产凭据格外谨慎,可以加载页面后断网,工具仍可使用。
解码JWT需要密钥吗?
不需要。头部和载荷只是Base64URL编码,并未加密,任何人都可以解码和读取。只有创建或验证签名时才需要密钥(或私钥),这也是不应在JWT载荷中存储敏感数据的原因。
exp、iat和nbf声明是什么意思?
它们是以秒为单位的Unix时间戳:iat记录令牌签发时间,nbf是令牌最早可被接受的时刻,exp是令牌失效的时刻。解码器会把每个值转换为易读的UTC日期,并告诉你令牌当前是否在有效期内。
为什么API拒绝了在这里能正常解码的令牌?
解码只能证明令牌格式正确。服务器还会检查签名、过期时间、签发者和受众。最常见原因是exp已过期、nbf存在时钟偏差、aud值错误,或签名使用了不同于服务器预期的密钥。
此工具能验证RS256或ES256令牌吗?
不能。这些是需要签发者公钥的非对称算法,公钥通常从JWKS端点获取。本工具只使用共享密钥验证对称HMAC-SHA-256签名;其他算法的令牌仍可正常解码,只是无法在此验证。
解码和验证有什么区别?
解码是读取内容,任何人无需密钥都能做到。验证则会根据头部和载荷重新计算加密签名,并与令牌的第三段比较,从而证明令牌由密钥持有者签发,且之后未被修改。