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.
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
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.