JWT 生成器
在浏览器中使用自定义 payload、密钥和算法(HS256、HS384、HS512)构建并签名 JSON Web Token。无数据发送至服务器——所有签名均使用 WebCrypto API 完成。
头部
密钥
密钥用于签名令牌。请保密,切勿分享。
Payload
生成的令牌
Related Tools
关于 JWT 生成器
工作原理
- 在 JSON payload 中填写您想要包含的声明。
- 选择签名算法(HS256、HS384、HS512 或 none)。
- 输入 HMAC 算法的密钥。
- 该工具使用 WebCrypto API 完全在您的浏览器中签名令牌。
- 复制生成的 JWT 以用于您的 API 请求或测试。
常见用例
- 在本地测试受 JWT 保护的 API 端点
- 为开发和预发布环境生成令牌
- 学习和理解 JWT 结构
- 为文档或演示创建示例令牌
- 在没有后端的情况下调试身份验证流程
Frequently Asked Questions
什么是 JWT,为什么需要生成它?
JSON Web Token(JWT)是 RFC 7519 定义的一种紧凑、URL 安全的令牌格式。它通常用于 Web 应用程序和 API 中的身份验证和安全信息交换。您可能需要生成 JWT 来测试受保护的 API 端点、为文档创建示例令牌,或在不运行后端的情况下调试身份验证流程。
使用真实密钥使用此工具安全吗?
此工具完全在您的浏览器中使用 WebCrypto API 运行。数据永远不会发送到服务器。但是,我们建议在此处使用测试/虚拟密钥而不是您的真实生产密钥,因为最佳实践要求不要在第三方网站上输入敏感凭据。
此工具支持哪些算法?
该工具支持 HS256(HMAC-SHA256)、HS384(HMAC-SHA384)和 HS512(HMAC-SHA512)——JWT 最广泛使用的对称签名算法。它还支持 "none"(未签名令牌)用于测试目的。非对称算法如 RS256 或 ES256 需要私钥,此处不支持。
HS256、HS384 和 HS512 之间有什么区别?
三者都是基于 HMAC 的签名算法,仅在使用的 SHA 哈希函数上有所不同:HS256 使用 SHA-256(256 位签名),HS384 使用 SHA-384,HS512 使用 SHA-512。HS256 是迄今为止最常见的选择。如果您需要更强的签名或您的基础设施需要,请使用 HS384 或 HS512。
JWT payload 中应该放什么?
payload 是一个包含 "claims"(声明)的 JSON 对象——关于主体(用户)或会话的键值对。标准注册声明包括:sub(主题/用户 ID)、iss(签发者)、aud(受众)、exp(过期时间)、iat(签发时间)和 nbf(不早于)。您还可以添加应用程序需要的任何自定义声明。
"none" 算法是什么,何时应该使用它?
"none" 产生一个未签名的 JWT——签名部分为空。这绝不应该在生产环境中使用,因为它不提供完整性保护。它可能对测试解析器或为不验证签名的系统生成令牌有用,但始终将其视为不安全的。
标准 Claims 助手如何工作?
标准 Claims 助手可让您快速将常见的 JWT 注册声明添加到 payload 中。填写 Subject(sub)、Issuer(iss)和/或 Audience(aud)字段并选择过期窗口。该工具自动将 iat 设置为当前 Unix 时间戳,并从所选窗口计算 exp。
底部的令牌结构分解显示什么?
JWT 有三个由点分隔的部分:Header(算法和令牌类型)、Payload(声明)和 Signature。分解以颜色编码显示每个 base64url 编码的部分,以便您可以直观地识别生成令牌的结构。
为什么即使输入相同,我生成的令牌每次都不同?
基于 HMAC 的签名是确定性的——如果 header、payload 和 secret 相同,输出将始终相同。如果您看到不同的令牌,请检查 iat(签发时间)声明是否被自动更新为当前时间戳,这会改变 payload 因此改变签名。
我可以用此工具验证 JWT 吗?
此工具专为生成和签名令牌而设计。要解码和检查现有 JWT,请使用 JWT Decoder 工具。此生成器目前未实现密码学签名验证——请使用专用库或 JWT Decoder 进行验证。
如果我在 payload 字段中输入无效 JSON 会怎样?
该工具将在文本区域下方显示红色错误消息,并且在 JSON 有效之前不会生成令牌。确保所有键和字符串值都用双引号括起来,整体结构是有效的 JSON 对象。
我的密钥应该多长?
对于 HS256,密钥应至少为 32 字节(256 位)。对于 HS384 至少使用 48 字节,对于 HS512 至少使用 64 字节。使用较短的密钥在技术上是允许的,但会降低安全性。