DevToolbox

JWT 身份验证:开发者实用指南

2026-05-25

快速回答

快速回答: JWT 由三段 Base64URL 编码部分组成——header、payload、signature,用点号连接。用我们的 JWT 解码器 解码 payload 查看声明;在信任数据前务必在服务端验证签名。

JWT 结构

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.SIGNATURE
   HEADER              PAYLOAD           SIGNATURE

header 声明算法(alg)与类型(typ)。payload 存放 claims——关于用户或令牌的陈述。

常见声明

声明含义
subSubject(用户 ID)
issIssuer(签发者)
audAudience(受众)
expExpiration(Unix 秒级过期时间)
iatIssued at(签发时间)

exp 已过期,令牌无效——我们的解码器会高亮提示。

调试无效令牌

  1. 将令牌粘贴到 JWT 解码器
  2. 确认 alg 与 API 预期一致。
  3. 检查时钟偏差——服务端对 exp 常允许 30–60 秒容差。
  4. 记住:解码 ≠ 验证。任何人都能读 payload;只有持有密钥/私钥的服务端能验证签名。

示例 payload

{
  "sub": "user_42",
  "name": "Alex",
  "iat": 1710000000,
  "exp": 1710003600
}

安全注意事项

  • 切勿在 JWT payload 中放密钥——它只是编码,不是加密。
  • Web 应用优先使用短效 access token + refresh 流程。
  • 轮换签名密钥,登出时作废 refresh token。

亲自试试

立即解码 JWT →

常见问题

JWT 是加密的吗?

不是。JWT 是签名的(保证完整性);只有在使用较不常见的 JWE 时才会加密,而非常见的签名 JWS。

不验证签名能信任 payload 吗?

不能。未验证的 payload 只能当作不可信提示。

HS256 与 RS256 有何区别?

HS256 使用共享密钥——适合单体应用。RS256 使用公钥/私钥——多个服务验证令牌时更合适。

亲自试试

使用我们的免费JWT 解码——无需注册。

打开JWT 解码 →