JWT解码器
即时解码JWT令牌,查看头部、载荷和签名。提供HMAC签名验证、有效期检查和历史记录保存功能。
JWT解码器
输入JWT令牌后将自动解码
什么是JWT解码器?
JWT解码器是分析JSON Web Token(JWT),确认头部、载荷、签名,并验证令牌有效性的工具。可以轻松分析API认证、OAuth、SSO等使用的JWT令牌,是开发和调试的必备工具。
只需粘贴令牌即可立即解码,直观确认算法、过期时间、签发信息等所有声明。对于HMAC算法,输入Secret Key即可验证签名有效性。
适用场景
- API调试 – 确认REST API认证令牌内容并检查过期情况
- OAuth开发 – 实现OAuth 2.0 / OpenID Connect时分析access_token、id_token
- 认证错误解决 – 查找”Token expired”、”Invalid signature”等认证错误原因
- 安全审查 – 确认JWT中包含的敏感信息并检查安全漏洞
- 学习目的 – 理解JWT结构和工作原理的实践
- 客户端开发 – 测试前端的令牌解析和过期处理逻辑
主要功能
- 实时解码 – 输入JWT后立即分离头部、载荷、签名并以JSON格式显示
- 过期时间验证 – 分析exp、iat、nbf声明,显示令牌有效性和剩余时间
- HMAC签名验证 – 使用Secret Key验证HS256、HS384、HS512算法的签名
- 声明详细分析 – 一目了然地确认iss、sub、aud等标准声明
- 语法高亮 – 用颜色区分JSON键、字符串、数字、布尔值
- 历史记录保存 – 将最近解码的5个JWT保存到本地以快速重用
- 剪贴板复制 – 单独复制头部、载荷、签名
- 示例JWT – 立即加载测试用示例令牌以确认功能
使用方法
- 输入JWT – 在左侧输入框粘贴要分析的JWT令牌(以eyJ…开头的字符串)
- 确认结果 – 右侧显示分离的Header(算法)、Payload(数据)、Signature(签名)
- 确认过期 – 在顶部状态卡确认令牌有效性和剩余时间
- 验证签名(可选) – 如果是HMAC算法,输入Secret Key后显示签名有效性
- 复制/使用 – 用各部分的复制按钮将所需部分复制到剪贴板
理解JWT结构
JWT由点(.)分隔的三部分组成:
| 组成要素 | 内容 | 示例 |
|---|---|---|
| Header | 算法(alg)和令牌类型(typ) | {"alg":"HS256","typ":"JWT"} |
| Payload | 声明(Claims) – 令牌中包含的信息 | {"sub":"123","name":"John"} |
| Signature | 用密钥签名头部+载荷的值 | HMACSHA256(header.payload, secret) |
标准JWT声明
| 声明 | 说明 | 示例 |
|---|---|---|
iss |
签发者 (Issuer) | https://auth.example.com |
sub |
主体 (Subject) – 用户ID | user_12345 |
aud |
受众 (Audience) – 令牌接收者 | my-app |
exp |
过期时间 (Expiration Time) | 1735689600 (Unix timestamp) |
iat |
签发时间 (Issued At) | 1735686000 (Unix timestamp) |
nbf |
生效时间 (Not Before) | 1735686000 (Unix timestamp) |
jti |
令牌唯一ID (JWT ID) | abc123xyz |
支持的算法
- HS256 (HMAC + SHA-256) – 对称密钥算法,最常用。可用Secret Key验证签名
- HS384 (HMAC + SHA-384) – 比HS256更长的哈希,更高的安全性
- HS512 (HMAC + SHA-512) – 最长的HMAC哈希,最高安全性
- RS256, RS384, RS512 – RSA非对称密钥算法(仅支持解码,不支持签名验证)
- ES256, ES384, ES512 – ECDSA椭圆曲线算法(仅支持解码)
* RSA、ECDSA算法的签名验证需要公钥,当前版本仅支持HMAC算法的签名验证。
个人信息保护
此工具100%在浏览器中运行。输入的JWT令牌和Secret Key绝不会发送到服务器,所有解码和签名验证仅在用户设备上进行。关闭浏览器后所有数据将被删除。(历史记录保存在本地存储中,可随时通过”全部删除”删除)
详细说明
JWT解码器的结果基于输入值与所选条件计算得到。
涉及最终决策时,请结合官方标准或专业意见进行复核。
常见问题
JWT解码需要Secret Key吗?
不需要,JWT的Header和Payload仅进行Base64Url编码,无需Secret Key即可解码。Secret Key仅用于签名(Signature)验证。因此,不应在JWT中包含敏感信息。
令牌显示已过期该怎么办?
如果JWT的exp(过期时间)声明早于当前时间,则显示为已过期。过期的令牌会被服务器拒绝,因此需要使用刷新令牌或重新登录以获取新令牌。
为什么会出现签名不匹配?
如果输入的Secret Key与签发令牌时使用的密钥不同,则会出现签名不匹配。此外,对于RSA或ECDSA算法,由于此工具仅支持HMAC,因此显示为”仅支持HMAC”。请确认正确的Secret Key。
JWT和基于会话的认证有什么区别?
基于会话的认证是服务器保存会话信息并通过cookie管理会话ID。而JWT的信息包含在令牌本身中,服务器无需保存状态(Stateless)。JWT适用于微服务、移动应用、SPA,会话适用于传统Web应用。
JWT中不应包含哪些信息?
JWT的Payload未加密,仅进行编码,任何人都可以查看。因此,绝不应包含密码、信用卡号、身份证号等敏感信息。仅包含用户ID、权限(role)、过期时间等必需信息。
输入的JWT会发送到服务器吗?
不会,此工具100%在浏览器(客户端)中运行。输入的JWT和Secret Key不会发送到服务器,所有解码和验证仅通过JavaScript在浏览器中处理。可以在网络选项卡中直接确认。
还没有评论,欢迎留下第一条意见。