JWT Generator

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.

Signing uses the browser's WebCrypto HMAC implementation (crypto.subtle.sign). The secret is typed into this page and used here — it is never sent to a server, never logged, and never stored. Only HMAC algorithms are offered: RS/ES signing would require pasting a private key into a web page.

Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand JWT Generator

用你提供的头部和载荷构建 JSON Web Token,并用你的密钥以 HMAC-SHA-256、384 或 512 签名,全部在你的浏览器中完成。

How it works

头部与载荷的 JSON 会被 Base64URL 编码并用点连接,这个字符串就是签名输入。WebCrypto 用你的密钥对它计算 HMAC,结果再经 Base64URL 编码作为第三段附加上去。验证是完全相同的操作:服务器对前两段重新计算 HMAC 并进行比对。由于 HMAC 是对称的,任何能够验证令牌的人也能够签发令牌。

When to use it

  • 生成带特定声明的测试令牌,用来走通某条授权路径。
  • 复现身份提供方签发的令牌,以判断问题出在签发环节还是验证环节。
  • 检验你的验证代码是否真的会拒绝过期的 exp、错误的 aud 或未到时间的 nbf。
  • 为集成测试创建夹具令牌,那里的签名密钥是一个已知的测试值。
  • 当手写的签名实现与某个库结果不一致时,看清究竟是哪些字节被签名了。

Watch out for

  • 令牌的可信度不会超过它的密钥。不要把生产环境的签名密钥粘进任何网页——进过浏览器的密钥应视为已烧毁,请轮换它。
  • HS256 的安全上限取决于密钥而不是算法。短密钥或字典词密钥只需一个被截获的令牌就能离线破解,因为令牌本身已经给了攻击者验证猜测所需的一切。请至少使用 32 字节的随机值。
  • exp、iat 和 nbf 的单位是自纪元起的秒数。在 exp 里放一个毫秒值会产生一个实际上永不过期的令牌,而符合规范的验证方会毫无异议地接受它。
  • 签名不是加密。载荷中的每一条声明对任何持有该令牌的人都是可读的;已签名的 JWT 保护声明不被修改,却从不阻止它被读取。

Not the right tool for: 签发你的生产系统将会接受的令牌。那些请在你的服务内部签名,并优先选择 RS256 或 EdDSA 这类非对称算法,好让验证方只持有公钥,无法自行伪造令牌。

Frequently Asked Questions

如何生成 JWT 令牌?

选择算法,编辑载荷 JSON,加上 iss、sub、aud 和过期时间等声明,然后填入签名密钥并点击签发 JWT。头部、载荷和 HMAC 签名会以不带填充的 base64url 编码,并用点连接起来。

在这里输入我的 JWT 密钥安全吗?

密钥由你标签页内的 crypto.subtle.sign 使用。它不会被发送到服务器、不会被记录、也不会被存储。即便如此,也请谨慎对待生产环境的签名密钥——测试时请生成一个一次性密钥,而不是粘贴线上那一个。

为什么不提供 RS256 和 ES256?

那些算法用私钥签名,而把生产环境的私钥粘进任何网页都是不值得教给别人的坏习惯。这里只提供 HMAC 系列算法。alg 值 "none" 同样不在其列——它是经典的 JWT 绕过攻击,不是一项功能。

How to Use JWT Generator

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.