JWT 生成器

生成 JWT

您可在浏览器中直接生成并签署 JWT :输入有效载荷声明(标准格式subaudexp等或自定义内容),选择算法(使用共享密钥的HS256或使用私钥的RS256/ES256),系统便会生成三部分组成的令牌。该工具适用于本地开发、负载测试及验证问题复现场景。

如何生成 JWT

  1. 1

    编写有效载荷

    标准声明(`sub`、`iss`、`aud`、`exp`、`iat`、`nbf`)以及您的应用程序所需的任何自定义声明。

  2. 2

    选择算法

    采用共享密钥的HS256/384/512算法,或采用PEM格式私钥的RS256/ES256算法。

  3. 3

    提供密钥

    可共享 HMAC 的密文,或粘贴RSA/ ECDSA 的私钥。两者均保留在您的浏览器中。

  4. 4

    生成

    输出结果为带符号的令牌。请复制该令牌,在测试中使用,并通过 JWT 解码器进行解码以检查其内容。

经认证用户令牌的典型负载

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "user_12345",
  "iat": 1713398400,
  "nbf": 1713398400,
  "exp": 1713402000,
  "jti": "3c7c7e14-2de4-41f0-bf09-1eb5cfad4c01",
  "scope": "read:profile write:posts"
}

算法选择:HMAC 算法与非对称算法

算法 关键类型 适用场景
HS256 256位共享密钥 能自行签名和验证的单体算法
HS384/512 加密长度更长 与 HS256 相同,安全性更强
RS256 RSA 2048+ 发行方签名;多项服务均使用公钥进行验证
ES256 ECDSA P-256 与 RS256 相同,但特征码更小
EdDSA Ed25519 最快速的非对称认证算法,所需密钥长度最短

密钥强度

  • HMAC 密钥的熵值必须至少与算法输出长度相当。HS256 算法需要 256 个随机比特(32 字节);若少于此数量则易被暴力破解。
  • RSA 密钥长度至少为 2048 位;对于长期使用的令牌,可使用 3072 位或 4096 位。
  • ECDSA(ES256)在密钥长度显著更短且签名速度更快的前提下,提供了与 RSA 3072 相当的安全性。

有效期指南

令牌类型 典型 exp 有效期
访问令牌 5–60分钟
刷新令牌 天至周
密码重置 5–15分钟
邮箱验证 24小时
服务间 1–5分钟(较短)

短期到期+刷新机制的令牌是现代主流模式;而长期有效的访问令牌一旦被攻破,其撤销难度极高。

常见错误

  • **在生产环境中重复使用测试密钥。**若密钥安全性不足,生成器会标记HS256密钥及其输出 JWT 为“仅限测试”状态,请务必重视此警告。
  • 未使用exp的签名。 无有效期的 JWT 永久有效。除非有充分理由且被列入撤销名单,否则务必设置exp
  • 在验证端直接采用头部中的 alg 始终在验证端将算法列入白名单;切勿遵循令牌的要求。
  • 在此处粘贴真实的私钥。 该生成器可在您的浏览器中运行,请将私钥视为机密信息:请使用测试密钥而非生产密钥。

常见问题

不。签名操作通过Web Crypto API在您的浏览器中完成。密钥始终保留在您的设备上。不过,生产密钥必须在受控环境中生成和签名,而非在浏览器中进行。

对于需要统一服务签名与验证的单体系统,HS256已足够适用;而当签发方与验证方分离时,RS256或ES256更为合适,此时可共享公钥而不泄露签名密钥。

访问令牌的处理时间通常为5至15分钟。建议使用有效期较长的刷新令牌以确保用户体验流畅。切勿在未包含 exp 索引的情况下签发 JWT。

该工具支持输出 alg: none 以对损坏或未签名的令牌进行针对性测试,并会显示醒目的警告提示。切勿在生产代码中使用此类令牌。

相关工具

此工具还提供其他语言版本