无需登录 数据私有 本地保存

JWT 调试器增强版 - 签名验证与有效期检查

14
0
0
0

JWT 调试器增强版

签名验证 · 有效期检查 · Claims 可视化解析

JWT 格式无效,请检查是否包含两个点号(.)分隔符
HEADER头部
算法 & 令牌类型
PAYLOAD载荷
Claims 声明数据
SIGNATURE签名
Base64URL 编码签名
签名验证
有效期检查
请先输入 JWT Token
Claims 声明详情
声明 (Claim) 说明
— 暂无数据 —
常见问题 (FAQ)
什么是 JWT?它由哪几部分组成?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。它由三部分组成,用点号(.)分隔:

  • Header(头部):包含令牌类型(typ)和签名算法(alg),经过 Base64URL 编码。
  • Payload(载荷):包含声明(Claims),如用户ID、过期时间等,经过 Base64URL 编码。
  • Signature(签名):对前两部分进行签名计算,防止数据被篡改。
HS256 和 RS256 有什么区别?

HS256 (HMAC-SHA256):对称加密算法,使用同一个密钥进行签名和验证。速度快,适合微服务内部通信。

RS256 (RSA-SHA256):非对称加密算法,使用私钥签名、公钥验证。更适合第三方客户端场景,避免了密钥共享的风险。

选择建议:如果只有你的服务器使用JWT,HS256足够;如果需要分发给第三方验证,使用RS256或ES256。

exp、nbf、iat 分别是什么意思?
  • exp (Expiration Time):过期时间。Token 在此时间之后失效,必须重新获取。
  • nbf (Not Before):生效时间。Token 在此时间之前不可使用。
  • iat (Issued At):签发时间。Token 的创建时间戳。

这三个时间都是Unix 时间戳(秒),通常用于控制 Token 的生命周期。建议始终设置 exp 以限制 Token 的有效期。

Base64URL 编码和 Base64 有什么不同?

Base64URL 是 Base64 的 URL 安全变体,主要区别:

  • + 替换为 -
  • / 替换为 _
  • 移除末尾的 = 填充字符

这样 JWT 可以直接放在 URL 参数中而无需额外的 URL 编码。

JWT 安全吗?使用时需要注意什么?
  • ⚠️ 不要在 JWT 中存储敏感信息 — Payload 只是 Base64URL 编码,任何人都可以解码查看。
  • 🔐 始终验证签名 — 防止 Token 被篡改。
  • 设置合理的过期时间 — 建议短期有效(如15分钟~2小时),配合 Refresh Token 使用。
  • 🔑 使用强密钥 — HS256 密钥至少 256 位(32字节)。
  • 🚫 避免使用 none 算法 — 它允许无签名的 JWT,是严重的安全漏洞。
  • 📋 验证所有声明 — 包括 iss(签发者)、aud(接收者)等。
JWT 过期后怎么办?什么是 Refresh Token?

JWT 过期后需要重新获取。常见的做法是使用双 Token 机制

  • Access Token(访问令牌):短期有效(如15分钟),用于API请求认证。
  • Refresh Token(刷新令牌):长期有效(如7天),用于获取新的 Access Token。

当 Access Token 过期时,客户端使用 Refresh Token 向认证服务器请求新的 Access Token,无需用户重新登录。