开发者工具 · JWT 解码器
调试 401:在指责 API 之前在解码的 JWT 中检查什么
· 为什么它很重要
jwt 调试 身份验证
大多数令牌拒绝都归结为一些您可以通过读取有效负载发现的索赔问题。这篇文章提供了一个清单,从过期到受众再到复制粘贴错误,以便检查它们。
昨天起作用了 - 401 出现时没有代码更改
在未更改客户端代码的情况下出现的 401 可能源于令牌年龄、发行者政策、密钥轮换、受众选择或损坏的副本。从证据开始,而不是假设 API 已关闭。在操作凭证之前保留响应详细信息和相关标识符。
仅解码过期的、合成的或适当控制的副本。 ToolAcre 可以公开结构和索赔线索,但它无法识别每个服务器拒绝,因为它没有密钥、发行者策略或 API 日志。清单缩小了问题范围;它不会取代资源服务器的判决。
首先复制错误 - 'Bearer' 前缀、尾随换行符和截断的标记
首先检查复制的值。 ToolAcre 会修剪周围的空白并删除一个不区分大小写的 `Bearer ` 前缀,该前缀处理常见的授权标头粘贴。然后它需要正好三个点分隔的段。在索赔分析开始之前,错误的计数会导致截断、错误的标记形式或额外的标点符号。
空标头或有效负载会特别失败。无效的 base64url、无效的 UTF-8 和无效的 JSON 有单独的错误。这些区别有助于确定运输是否损坏了代币。签名可能格式错误,但不会阻止检查,但该警告仍然可能是验证失败,需要服务器端确认。
exp 和 nbf:检查基于秒的值,而不将显示转换为有效性判定
接下来检查数字 `exp` 和 `nbf` 值。 ToolAcre 将秒乘以 1,000,显示 UTC 并标记相对于浏览器时钟的较早到期或未来不早于。十三位数的值可能会显示在预期秒数的位置写入了毫秒。
请勿将这些标签推广至强制执行。伪造的令牌可以声称未来到期,并且服务器可以使用不同的时钟或余地策略。显示识别值得与可信日志进行比较的算术;密码验证必须成功,声明才能影响接受。
aud 和 iss — 这是此 API 的令牌,来自此 API 信任的发行者吗?
`aud` 应根据 API 策略识别预期接收者,而 `iss` 应匹配受信任的颁发者关系。 ToolAcre 将两者都列为解码值并解释了它们的注册含义。它不会将它们与 API 配置进行比较,也不会将颁发者字符串绑定到密钥集。
可以伪造合理的发行者 URL 和受众名称。仅在保留签名验证边界后,才将准确的解码值与服务器配置的期望进行比较。如果多个服务共享身份基础设施,则受众检查对于防止一项服务的有效令牌在另一项服务中使用尤其重要。
令牌类型可能由标头和声明建议,但解码无法验证该分类
ID 令牌和访问令牌看起来都像由三部分组成的 JWT。标题 `typ`、受众、范围和特定于个人资料的声明可能会建议您持有哪一个。 ToolAcre 会警告意外字符串 `typ`,但它不会实现 OpenID Connect 或 OAuth 令牌分类。
使用发行者文档和客户端流程来建立预期的令牌类型。即使 ID 令牌的签名对于身份提供者有效,将 ID 令牌发送到 API 也可能会失败。解码支持诊断;它无法验证类型标签或授予 API 权限。
kids — 引用服务器不再拥有的密钥的有效令牌
密钥轮换后,标头 `kid` 可能引用服务器当前可信集中不存在的密钥。读取标识符,然后检查验证器上的缓存和密钥集日志。不要获取标头提供的 URL 或接受嵌入的密钥材料作为快速解决方法。
如果验证者无法找到允许的密钥,正确签名的令牌仍可能失败,而攻击者可以将任何 `kid` 写入未经验证的标头。该值是受可信颁发者配置约束的查找提示,而不是应该相信特定密钥的证据。
工作示例 — 通过 ToolAcre JWT 解码器中的清单运行拒绝的令牌
对于有效分类,获取受控拒绝令牌,确认三个段,检查错误,然后记录 `exp`、`nbf`、`aud`、`iss`、`typ` 和 `kid`,而不对其进行编辑。将每个字段与请求的目标 API 和验证者的可信配置进行比较。保持服务器日志打开以了解实际的故障类别。
如果所有可见值看起来都符合预期,请不要断定 API 是错误的。签名损坏、错误的密钥材料、撤销状态或未显示的策略仍然可以解释 401。无论 JSON 看起来多么整洁,ToolAcre 的 `signatureVerified` 仍然为 false。
这不包括什么以及要点 - 解码器无法告诉您签名是否有效;检查表发现索赔问题,签名失败需要服务器日志
解码器无法告诉您签名是否有效。它的声明清单发现了无需密钥即可看到的复制和有效负载问题;签名失败和权威策略决策需要服务器证据。将解码视为多种诊断观察中的一种。
最快的可靠路径是有序的:保留响应上下文,检查令牌形状,比较时间单位,然后将发行者、受众、类型和密钥标识符与可信配置进行比较。在真正的验证者确认密码学和策略之前,不要缺乏信任。