简体中文

开发者工具 · JWT 解码器

JWT 标头解释:alg、typ、kid 和不信任字段

· 工作原理

jwt 安全 身份验证

解码的 JWT 标头停在验证者信任边界
原始 ToolAcre 矢量图

标头告诉验证者如何对令牌进行签名以及使用哪个密钥。这篇文章解释了每个公共标头字段、验证者可能依赖的内容以及令牌本身决不能信任哪些字段。

没有人读取的小 JSON 对象 - 以及它影响的验证决策

标头小到足以被忽略,但其字段经常参与验证路由。这使得将可见性与权威混为一谈是危险的。 ToolAcre 将标头解码为 JSON 对象并显示其属性,但每个字节都来自令牌持有者,并且仍然是不受信任的输入。

验证者只能在从可信配置建立的约束内使用标头值。它不应该让代币发明可接受的算法、发行者或远程密钥源。解码器的工作以可读的 JSON 加上警告结束;它从不选择密钥或产生允许或拒绝的决定。

alg 显示:解码器仅解释其实现中指定的算法

`alg` 声明令牌声明所使用的算法。 ToolAcre 具有 HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384、ES512、PS256、PS384 和 PS512 的解释性注释,以及 `none` 的警告。任何其他字符串都将显示为无法识别,而不是视为受支持。

此列表是一个显示功能,而不是 ToolAcre 可以验证的算法目录:它不会验证任何算法。后端必须独立固定其允许的选择并拒绝不匹配。读取 `alg: RS256` 不能证明使用了 RSA,就像读取 `alg: none` 不能安全地授权未签名的令牌一样。

typ 和 cty — 声明令牌类型、访问令牌的 at+jwt 配置文件以及嵌套 JWT

`typ` 描述制作者想要的媒体类型或配置文件。当字符串值与 `JWT` 不同时,ToolAcre 会发出警告;它不强制配置文件语义。 `cty` 字段可以描述嵌套内容,但当前解码器没有嵌套令牌处理路径,并且不会解释该字段。

显式键入可以帮助验证者在其策略定义预期值时将不同的令牌类别分开。支票仍然属于该验证者。令牌不能仅通过宣布首选标签来使自己成为访问令牌,并且解码面板无法确定哪个应用程序端点应该使用它。

kids — 密钥标识符,可让验证者在不停机的情况下轮换密钥

`kid` 是密钥标识符,不是密钥材料,也不是所有权证明。轮换多个可信密钥的服务可以使用经过身份验证的发行者上下文和受限标识符来定位候选者。标识符必须保留为受控查找的输入,而不是文件路径、查询片段或任意 URL。

ToolAcre 使 `kid` 在标头 JSON 中可见,但未解析它。这种限制很重要:公共解码页面无法使用受信任的密钥存储。如果 401 遵循轮换,请将显示的标识符与服务器端密钥清单和日志进行比较,而不假设令牌的建议密钥是合法的。

jku、x5u、jwk 和 x5c — 指向密钥的标头字段,以及为什么验证者绝不能盲目获取或信任它们

诸如 `jku` 和 `x5u` 之类的字段可以命名位置,而 `jwk` 和 `x5c` 可以携带与密钥相关的数据。他们的存在并不会使这些位置或价值观变得可信。仅仅因为提供了未经验证的标头而获取 URL 或接受嵌入材料,就会将安全决策交给请求者。

安全验证者通过令牌外部建立的发行者关系和网络策略来获取密钥。 ToolAcre 既不获取标头 URL,也不从嵌入的密钥建立信任。在审核过程中,看到这些字段之一是提示检查验证程序配置,而不是遵循标头的指令。

crit — 验证者必须理解或拒绝的扩展

`crit` 表示特定扩展需要收件人的理解。支持此类扩展的验证程序需要针对未知关键名称的显式实现和拒绝路径。忽略不熟悉的关键标记可能会使生产者和消费者对受保护的内容有不同的解释。

仅解码实现不处理 `crit`,因此它可以显示原始数组而无需声明兼容性。这是检查和验证之间的另一个界限。如果生产令牌依赖于关键扩展,请验证实际库和配置中的行为,而不是从可读的 JSON 推断支持。

工作示例 - 读取实际标头并确定哪些字段通知验证,哪些字段仅提供信息

考虑 `{"alg":"RS256","typ":"JWT","kid":"rotate-7"}`。 ToolAcre 漂亮地打印所有三个字段,并解释 RS256 验证需要颁发者公钥。审阅者可以记下声明的算法和密钥标识符,然后将它们与服务器的固定策略和可信密钥集进行比较。

这些字段为调查提供信息,但不独立做出任何决定。如果服务器仅允许其他算法,在正确的颁发者集中找不到 `rotate-7` 或拒绝签名,则可读标头不会覆盖该结果。同样,在不重新计算有效签名的情况下更改标题文本也不得被接受。

要点:标头是输入,而不是权限 — ToolAcre JWT 解码器显示标头,以便您可以读取它;验证者必须独立决定信任什么

将 JWT 标头视为输入,而不是权限。其值可以帮助在配置已授权的选项中进行选择,识别可能的轮换问题或解释配置文件不匹配。他们无法建立对自己的算法、密钥、URL 或令牌类型的信任。

使用 ToolAcre 读取测试标头并显示可疑值,例如缺少 `alg`、`none` 或意外的 `typ`。然后转到配置的验证程序以做出每个相应的决策。无论标头看起来多么可信,解码都不能证明真实性、完整性、授权或发行者身份。