跳转到正文

JWT 验证器

检查 JSON Web Token 是否真实且仍然有效。粘贴令牌以及其 HMAC 机密、PEM 公钥、证书、JWK 或完整 JWKS,验证器便会使用 jose 库检查签名,将 exp 和 nbf 与当前时间及可选的时钟容差进行比较,并在解码后的标头和声明旁给出清晰的判定。拒绝 alg none 的令牌。

重置

常见问题

验证器会检查什么?

验证器会根据你提供的密钥检查签名,然后将 exp 声明和 nbf 声明与当前时间进行比较。只有签名匹配且两项时间检查均未失败时,判定才是有效。载荷中会显示 iss、aud 或 sub 等声明,但不会将它们与预期值进行比较。

我可以粘贴哪些密钥?

对于 HS256、HS384 和 HS512,请将共享机密作为文本或 oct JWK 粘贴。对于 RSA、EC 和 EdDSA 令牌,请粘贴 PEM 公钥(SPKI 或 PKCS #1)、X.509 证书、公共或私有 JWK、最多包含 50 个密钥的 JWKS,或私有 PEM 密钥;系统只会使用其中的公钥部分。

如何从 JWKS 中选出正确的密钥?

如果令牌标头包含 kid,就会使用集合中 kid 相同的密钥;如果没有匹配项,错误信息会指出该 kid。如果没有 kid,集合必须恰好包含一个密钥。这与大多数服务器从 jwks_uri 文档中选择密钥的方式一致。

算法选项有什么作用?

选择“使用令牌的 alg”时,算法取自令牌标头,但密钥仍必须与之匹配,因此 RSA 公钥绝不能用作 HMAC 机密。选择特定算法还会要求令牌使用该算法;服务器应通过这种方式固定预期算法。如果令牌使用了其他 alg,系统会拒绝它并显示这两个名称。

为什么拒绝 alg none 的令牌?

alg none 令牌不带签名,因此无从验证,任何人都可以编写这种令牌。在 JWT 库中接受此类令牌是一个众所周知的漏洞。验证器会将其报告为错误,而不会判定为有效。

exp、nbf 和时钟容差如何运作?

当 exp 小于或等于当前时间时,令牌会被视为已过期;当 nbf 晚于当前时间时,令牌会被视为尚未生效。时钟容差范围为 0 到 3600 秒,可放宽这两项检查,以应对服务器之间的时钟偏差。存在但不是数值的声明会使令牌无效。

签名无效意味着什么?

令牌并非使用你提供的密钥签署,或者其标头或载荷在签署后被修改。请检查粘贴的公钥或机密是否匹配(包括每个字符是否完全一致),并确认令牌已完整复制。解码后的标头和载荷仍会显示,供你进行比较。

支持哪些算法?

HS256、HS384、HS512、RS256、RS384、RS512、PS256、PS384、PS512、ES256、ES384、ES512,以及使用 Ed25519 密钥的 EdDSA。RSA 密钥必须至少为 2048 位。不解密加密令牌(JWE)。

令牌或密钥会被存储吗?

不会。令牌和密钥只会在内存中用于本次验证,绝不会记录或保存。公钥可以安全分享,但请谨慎对待 HMAC 机密,并轮换任何你怀疑已经泄露的机密。

令牌和密钥最大可以多大?

令牌最多可包含 65,536 个字符,密钥字段最多可包含 262,144 个字符,足以容纳大型 JWKS 文档。令牌必须包含三个以点分隔的 base64url 部分、一个带有 alg 成员的 JSON 标头,以及一个作为载荷的 JSON 对象。

关于 OneClick Pro

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