加密工具·7 分钟

如何解码 JWT 令牌:开发者指南

学习如何解码 JWT 令牌以检查头部、载荷和声明。附赠免费浏览器内解码器。

什么是 JWT?为什么要解码?

JSON Web Token(JWT)是一种紧凑、URL 安全的令牌格式,用于在两方之间传递声明(claims),最常见的是客户端和服务器之间。JWT 由三段 Base64URL 编码的部分组成,用点号分隔:头部(header)、载荷(payload)、签名(signature)。

解码 JWT 就是读取头部和载荷以了解它携带了哪些声明。这对调试认证问题、检查 API 响应中的令牌、或者理解"代表你发送了什么数据"至关重要。要注意:解码并不会校验签名——要做到这一点,你需要从签发方获取密钥或公钥。

常见使用场景

  • 调试认证流程:检查登录 API 返回的令牌
  • 审计声明:查看过期时间、签发者、受众和自定义字段
  • 本地开发:读取存储在 localStorage 或 cookie 中的令牌
  • 学习:理解现代 Web 应用中的认证机制
  • 安全审查:发现令牌中意外包含的敏感数据

方法 1:使用 UtilBoxx 免费 JWT 解码器(推荐)

我们的 JWT 解码器 能解析任意 JWT,并以可读格式展示头部和载荷,时间戳会转换为人类可读的日期。步骤如下:

  1. 访问 utilboxx.com/zh/tools/crypto/jwt
  2. 把 JWT 粘贴到输入框
  3. 头部和载荷即时解码显示
  4. 检查过期时间、签发时间等声明
  5. 一键复制任意段落

这个方法的优势

  • 完全在浏览器中运行——令牌不离开你的设备
  • 自动格式化 JSON 便于阅读
  • 高亮显示已过期和即将过期的令牌
  • 移动端友好,文本框大
  • 100% 免费、无需注册、不追踪

方法 2:使用 jwt.io

jwt.io(由 Auth0 提供)是流行的 JWT 在线工具。粘贴令牌即可解码头部和载荷,如果你提供密钥,还能选择性地校验签名。它被广泛使用,并支持许多库的算法。

方法 3:用你熟悉的语言解码

在 Node.js 中,使用 `jsonwebtoken` 库:

```javascript const jwt = require('jsonwebtoken'); const decoded = jwt.decode('eyJhbGciOi...', { complete: true }); console.log(decoded.header); console.log(decoded.payload); ```

在 Python 中,使用 `PyJWT` 库:

```python import jwt payload = jwt.decode("eyJhbGciOi...", options={"verify_signature": False}) print(payload) ```

`verify_signature: False` 这个参数很关键——它告诉库只解码、不校验签名,这正是你做检查时想要的。

常见问题

在线解码 JWT 安全吗?

解码是安全的,因为内容并非秘密——它们只是 Base64URL 编码,不是加密。但请勿把生产环境令牌粘贴到不可信的服务中。UtilBoxx 解码器在浏览器本地运行,令牌不会离开你的设备。

解码出来的 JWT 能信任吗?

不能。解码只显示声明,不会校验签名。一个令牌可以被解码但并不合法。在信任任何声明之前,务必使用签发方的密钥或公钥来校验签名。

解码和验证有什么区别?

解码读取内容。验证使用加密密钥确认令牌由可信方签发且未被篡改。用于本地检查时,解码就够;用于安全决策时,必须验证。

JWT 中通常包含哪些声明?

标准声明包括 `iss`(签发者)、`sub`(主题)、`aud`(受众)、`exp`(过期时间)、`iat`(签发时间)、`nbf`(生效时间)。自定义声明因应用而异,比如 `role`、`email`、`user_id`。

结论

解码 JWT 是开发者的日常任务。想要一个快速、私密、浏览器内的体验,把 UtilBoxx JWT 解码器 加入书签是最简单的方式。