JWT 解码器

在线 JWT(JSON Web Token)解码器,支持 JWT 的解析和验证,纯前端实现,安全可靠

ENCODED

HEADER

解析后的 JWT 内容将显示在这里

PAYLOAD

载荷内容将显示在这里

VERIFY SIGNATURE

输入用于签名 JWT 的密钥

选择密钥的编码格式

JWT 解码器知识库

什么是 JWT 解码?

JWT 解码是将 JWT Token 分解为其组成部分(Header、Payload、Signature)并显示其内容的过程。解码不需要密钥,因为 JWT 的 Header 和 Payload 部分只是 Base64 编码的 JSON 数据。

JWT 结构解析

Header(头部):包含令牌类型(typ)和签名算法(alg)信息

Payload(载荷):包含声明(claims),如用户信息、过期时间等

Signature(签名):用于验证令牌的完整性,需要密钥才能验证

JWT 主要使用场景

  • 身份认证:用户登录后,服务器生成 JWT 返回给客户端,后续请求携带此令牌进行身份验证
  • 信息交换:在不同服务之间安全地传输信息,因为 JWT 可以被签名验证
  • 单点登录(SSO):用户在一个应用中登录后,可以访问其他相关应用而无需重新登录
  • API 授权:为 RESTful API 提供无状态的授权机制
  • 移动应用认证:移动应用与后端服务的安全通信
  • 微服务架构:在微服务之间传递用户身份和权限信息

常用 JWT 算法详解

对称加密算法(HMAC)

  • HS256(HMAC-SHA256):最常用的算法,使用共享密钥进行签名和验证
  • HS384(HMAC-SHA384):更强的哈希算法,提供更高的安全性
  • HS512(HMAC-SHA512):最强的 HMAC 算法,适用于高安全要求场景

非对称加密算法(RSA)

  • RS256(RSA-SHA256):使用 RSA 私钥签名,公钥验证,适合分布式系统
  • RS384(RSA-SHA384):更强的 RSA 签名算法
  • RS512(RSA-SHA512):最强的 RSA 签名算法

椭圆曲线算法(ECDSA)

  • ES256(ECDSA-SHA256):使用椭圆曲线数字签名,性能优于 RSA
  • ES384(ECDSA-SHA384):更强的椭圆曲线签名算法
  • ES512(ECDSA-SHA512):最强的椭圆曲线签名算法

常见的 Payload 字段

  • iss(Issuer):令牌颁发者
  • sub(Subject):令牌主题,通常是用户ID
  • aud(Audience):令牌接收者
  • exp(Expiration):令牌过期时间
  • iat(Issued At):令牌颁发时间
  • nbf(Not Before):令牌生效时间
  • jti(JWT ID):JWT 的唯一标识符

JWT 安全最佳实践

  • 使用强密钥:HMAC 算法至少使用 256 位密钥,RSA 至少使用 2048 位密钥
  • 设置合理的过期时间:避免令牌长期有效,建议访问令牌 15-30 分钟过期
  • 使用 HTTPS:始终通过 HTTPS 传输 JWT,防止中间人攻击
  • 验证所有声明:检查 iss、aud、exp 等关键字段
  • 实施令牌撤销机制:维护黑名单或使用短期令牌配合刷新令牌
  • 避免存储敏感信息:JWT 内容可被解码,不要存储密码、个人敏感信息
  • 使用适当的算法:生产环境避免使用 "none" 算法
  • 定期轮换密钥:定期更换签名密钥以降低泄露风险

安全注意事项

  • JWT 的 Header 和 Payload 部分是 Base64 编码的,任何人都可以解码查看
  • 不要在 JWT 中存储敏感信息,如密码、信用卡号等
  • 解码 JWT 不等于验证 JWT,验证需要密钥
  • 始终检查 JWT 的过期时间和其他重要字段
  • 防范算法混淆攻击:严格验证算法类型
  • 注意时钟偏移:在验证时间声明时考虑服务器时钟差异

实际应用案例

Web 应用身份认证

用户登录后,服务器生成包含用户 ID 和权限的 JWT,前端存储在 localStorage 或 sessionStorage 中,后续 API 请求在 Authorization 头中携带此令牌。

微服务间通信

API 网关验证用户身份后,生成包含用户信息的 JWT 传递给下游服务,各服务无需再次验证用户身份,只需验证 JWT 签名。

移动应用 API 访问

移动应用通过用户名密码获取 JWT,后续 API 调用携带此令牌,服务器验证令牌有效性和权限。

权威信息来源