JWT 解码器
解码并检查 JSON Web 令牌以查看标头、有效负载和声明。
粘贴JWT以解码其内容。
JWT 解码器 — 在线免费解码和检查 JSON Web Tokens
我们的免费在线 JWT 解码器让您只需粘贴任意 JSON Web Token,即可立即查看其解码后的头部、有效载荷和签名。无需编写任何代码,即可检查令牌声明(如发行者、主题、过期时间、受众等)。所有操作均在您的浏览器中运行 —— 您的令牌绝不会发送到任何服务器。
什么是 JSON Web Token(JWT)?
JSON Web Token(JWT)是一种用于在各方之间安全传输信息的开放标准(RFC 7519),信息以 JSON 对象形式传输。JWT 常用于 Web 应用程序的身份验证和授权。当您登录网站时,服务器通常会返回一个 JWT,您的浏览器会在后续请求中包含该令牌以证明您的身份。
JWT 由三个用点分隔的部分组成:
- 头部 — 指定令牌类型和签名算法(例如:
{"alg": "HS256", "typ": "JWT"}) - 有效载荷 — 包含声明 — 关于实体(通常是用户)的陈述和其他数据(例如:
{"sub": "1234567890", "name": "John Doe", "iat": 1516239022}) - 签名 — 用于验证令牌未被篡改
每个部分均经过 Base64Url 编码,使令牌紧凑且 URL 安全。典型的 JWT 看起来像 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c。
如何使用此 JWT 解码器
- 在输入框中粘贴您的 JWT。令牌应为三个 Base64Url 编码部分组成的字符串,用点分隔。
- 查看解码后的头部 — 算法、令牌类型和其他元数据会立即显示。
- 查看解码后的有效载荷 — 所有声明以格式化、易于阅读的表格形式显示,时间戳转换为可读格式。
- 检查令牌状态 — 工具会自动检查基于
exp声明的令牌是否已过期。 - 复制任意部分 — 点击头部或有效载荷旁边的复制按钮即可复制解码后的 JSON。
所有解码操作均在您的浏览器中本地完成,使用 JavaScript 内置的 atob 函数。没有任何数据通过网络传输。
主要功能
| 功能 | 优势 |
|---|---|
| 即时解码 | 输入时实时解码头部和有效载荷 |
| 格式化 JSON 输出 | 带语法高亮的美观 JSON 格式 |
| 时间戳转换 | iat、exp 和 nbf 声明显示为可读日期 |
| 过期检查 | 自动检测并突出显示已过期的令牌 |
| 声明描述 | 常见声明(如 sub、iss、aud)均有标签说明 |
| 复制到剪贴板 | 一键复制解码后的头部或有效载荷 JSON |
| 零数据传输 | 所有解码操作均在浏览器本地完成 |
常见 JWT 声明参考
| 声明 | 名称 | 描述 |
|---|---|---|
iss |
发行者 | 识别发出令牌的主体 |
sub |
主题 | 识别令牌的主题主体 |
aud |
受众 | 识别令牌的目标接收者 |
exp |
过期时间 | 令牌不再有效的日期和时间 |
nbf |
不早于 | 令牌无效的日期和时间 |
iat |
发行时间 | 令牌发行的日期和时间 |
jti |
JWT ID | 令牌的唯一标识符 |
name |
姓名 | 用户的全名 |
email |
电子邮件 | 用户的电子邮件地址 |
role |
角色 | 用户角色或权限级别 |
scope |
范围 | 授予的权限或范围 |
如需将数据编码到 URL 中,请尝试我们的 URL 编码器/解码器。如需 Base64 编码,请使用 Base64 编码器/解码器。
实际应用场景
调试身份验证问题
当用户报告无法访问受保护资源时,第一步是检查其 JWT。解码令牌以查看是否已过期,sub 声明是否匹配预期用户 ID,或 role 声明是否包含必要的权限。
开发期间验证令牌内容
在构建或测试 API 时,您经常需要验证服务器是否颁发了具有正确声明的令牌。将令牌粘贴到解码器中,可以快速验证有效载荷,而无需编写测试脚本。
检查第三方令牌
在与 Google、GitHub 或 Auth0 等 OAuth 提供商集成时,您会从其认证流程中收到 JWT。解码这些令牌有助于了解可用的声明以及如何将它们映射到您的用户模型。
学习 JWT 的工作原理
如果您是 JWT 新手,解码真实令牌是了解其结构的最佳方式。您可以确切看到头部和有效载荷中存储的信息,以及 Base64Url 编码的工作原理。
使用 JWT 的技巧
- 永远不要在 JWT 中存储敏感数据。有效载荷是 Base64 编码的,而不是加密的。任何截获令牌的人都可以读取其内容。使用服务器端会话来存储敏感数据。
- 始终使用 HTTPS。通过未加密连接发送的 JWT 可能被拦截和窃取。HTTPS 确保令牌在传输过程中加密。
- 设置较短的过期时间。令牌生命周期越短,攻击者在窃取令牌后造成的损害越小。使用刷新令牌来管理长期会话。
- 在服务器端验证签名。此解码器仅读取令牌 —— 它不会验证签名。始终在后端使用签名密钥验证签名。
- 使用
aud声明。始终指定预期受众,以防止为一个服务颁发的令牌被其他服务使用。 - 注意
none算法。一些旧版 JWT 库接受"alg": "none"的令牌,这会绕过签名验证。始终拒绝此类令牌。
常见问题解答
此 JWT 解码器是否免费使用?
是的。该工具完全免费,无需账户,也没有使用限制。
此工具是否会将我的令牌发送到服务器?
不会。所有解码操作均在您的浏览器中通过 JavaScript 完成。您的 JWT 从不通过网络传输。使用真实令牌是安全的。
此工具是否会验证 JWT 签名?
不会。此工具仅解码令牌以显示其内容,但不会验证签名。签名验证需要使用私钥或公钥,这些密钥绝不能共享。始终在后端验证签名。
支持哪些 JWT 算法?
解码器适用于任何 JWT,无论使用哪种签名算法(HS256、RS256、ES256 等)。由于它仅解码 Base64Url 编码的部分,算法对解码无影响。
如果我粘贴了无效的 JWT 会发生什么?
工具将显示错误信息,指出令牌格式无效。有效的 JWT 应由三个 Base64Url 编码部分组成,用点分隔。
什么是 JWT 的有效载荷?
JWT 的有效载荷是包含声明的 JSON 对象,声明是关于实体(通常是用户)的陈述和其他数据。例如,{"sub": "1234567890", "name": "John Doe", "iat": 1516239022} 包含用户的唯一标识符、姓名和令牌发行时间。