JWT 解码器和验证器

快速示例:

什么是 JWT?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在各方之间安全地传输 JSON 格式的声明信息。它通常用于身份认证和信息授权场景,例如用户登录后服务端签发一个 JWT,客户端每次请求时携带该 Token,服务端验证后即可识别用户身份,无需查询数据库。

JWT 的结构

一个 JWT 由三部分组成,用 . 分隔:

Header . Payload . Signature
  • Header:声明 Token 类型(typ: JWT)和签名算法(alg: HS256 等),经 Base64URL 编码
  • Payload:携带声明(Claims),包含用户信息和元数据,经 Base64URL 编码。注意:Payload 不加密,不应存放敏感信息
  • Signature:对 Header + Payload 用密钥进行 HMAC 签名,防止 Token 被篡改

常见声明(Claims)

字段 含义 示例
sub 主题,通常为用户ID "1234567890"
iss 签发方(Issuer) "https://example.com"
aud 接收方(Audience) "my-app"
exp 过期时间(Unix 时间戳) 1735689600
nbf 生效时间(Not Before) 1735600000
iat 签发时间(Issued At) 1735600000
jti Token 唯一标识 "abc123"

HS256 / RS256 / ES256 算法区别

  • HS256(HMAC-SHA256):对称算法,签名和验证使用同一个 Secret,适合服务端内部使用,本工具支持此类算法
  • RS256(RSA-SHA256):非对称算法,私钥签名、公钥验证,适合多服务之间分发 Token,公钥可公开
  • ES256(ECDSA-SHA256):基于椭圆曲线的非对称算法,安全性与 RS256 相当,但密钥更短、性能更好

安全注意事项

  • Payload 仅做 Base64URL 编码,不加密,任何人都可以解码读取,切勿在其中存放密码、身份证号等敏感信息
  • 始终验证 exp 字段,过期 Token 应拒绝服务
  • Secret 应足够复杂(建议 32 字节以上随机字符串),避免被暴力破解
  • 不要在客户端 localStorage 中存储含敏感权限的 JWT,推荐使用 HttpOnly Cookie
  • 本工具的所有解码和验证均在服务端完成,请勿将生产环境的真实 Secret 输入任何在线工具