跳转到正文

JWT 生成器

使用你自己的 JSON 声明创建带签名的 JSON Web Token。可选择使用共享密钥的 HS256、HS384 或 HS512,使用 RSA 私钥的 RS256 至 PS512,使用匹配 EC 密钥的 ES256 至 ES512,或使用 Ed25519 密钥的 EdDSA;密钥可采用 PEM 或 JWK 格式。生成器可添加 iat、exp 和 kid 标头,使用 jose 库进行签名,并在解码后的标头和载荷旁显示紧凑型令牌。

重置

常见问题

可以使用哪些签名算法?

生成器支持使用共享密钥的 HS256、HS384 和 HS512,使用 RSA 私钥的 RS256、RS384、RS512、PS256、PS384 和 PS512,使用 P-256、P-384 或 P-521 曲线 EC 私钥的 ES256、ES384 和 ES512,以及使用 Ed25519 私钥的 EdDSA。所选算法会写入 alg 标头,typ 始终设为 JWT。

载荷中应输入什么?

请输入包含声明的 JSON 对象,例如 sub、name、iss、aud 或任意自定义成员。数组、字符串和其他非对象值会被拒绝,因为 JWT 载荷必须是 JSON 对象。声明的顺序和值都会按输入内容原样保留。

如何读取 HMAC 密钥?

对于 HS256、HS384 和 HS512,密钥会先移除首尾空白,再作为 UTF-8 文本使用。如果密钥是二进制数据,请以 JWK 格式粘贴,例如 {"kty": "oct", "k": "..."},并将字节编码为 base64url;工具会改用解码后的字节。HMAC 算法不接受 PEM 密钥,因为将公钥用作 HMAC 密钥是一个常见错误。

HS256 密钥应有多长?

RFC 7518 要求密钥长度至少与哈希输出长度相同,因此 HS256 需要 32 字节,HS384 需要 48 字节,HS512 需要 64 字节。为便于复现测试令牌,工具也会使用较短的密钥进行签名;但生产环境中的密钥应是较长的随机值,例如使用密码生成器生成的密钥。

RSA、EC 和 EdDSA 支持哪些私钥格式?

请粘贴未加密的 PEM 私钥,格式可以是 PKCS #8(BEGIN PRIVATE KEY)、PKCS #1(BEGIN RSA PRIVATE KEY)或 SEC1(BEGIN EC PRIVATE KEY),也可以是包含 d 成员的私有 JWK。不支持读取加密的 PEM 文件和 OpenSSH 私钥。密钥必须与算法匹配,因此 ES384 需要 P-384 密钥,RSA 密钥则至少需要 2048 位。

iat 和 exp 如何设置?

启用签发时间选项后,除非载荷中已有 iat 声明,否则 iat 会设为当前时间。过期时间大于 0 秒时,exp 会设为当前时间加上相应秒数,并覆盖载荷中的任何 exp。过期时间为 0 时,不会添加 exp,并会保留载荷中已有的 exp。

kid 字段有什么用途?

非空密钥 ID 会写入 kid 标头,以便验证方从 JWKS 中选出正确的密钥。如果你粘贴 JWKS 作为签名密钥,kid 也会用于选择集合中为令牌签名的密钥。JWK 转换器和密钥生成器会显示 RFC 7638 指纹,可用作 kid。

结果包含哪些内容?

你会得到紧凑令牌、算法、密钥 ID、UTC 中的签发时间和到期时间,以及已签名的准确标头和载荷 JSON。请从第一个区块复制令牌。之后可以用 JWT 解码器再次解码,或用 JWT 验证器检查。

我的机密或密钥会被存储吗?

不会。机密或私钥只会随签署令牌的请求传输,在内存中使用一次,绝不会记录或保存。即便如此,实验时也请使用测试密钥;除非你控制服务器,否则切勿将生产签名密钥粘贴到任何网络工具中。

有文件大小限制吗?

载荷最多可包含 65,536 个字符,密钥最多可包含 65,536 个字符,kid 最多可包含 256 个字符。到期值范围为 0 到 315,360,000 秒,即十年。超出限制的输入会被拒绝,并提示具体字段。

关于 OneClick Pro

OneClick Pro 是一个免费的工具集合,包含超过 150 种网络工具,助你处理日常工作:转换图像和单位、格式化和验证代码、检查域名和 SEO,以及处理文本、日期和数字。所有工具均可免注册、免订阅使用;你输入的内容仅用于计算结果,绝不会被存储。你可以将它用作处理临时任务的快捷工具箱,也可以收藏每天都会用到的工具。