我的 JWT 标头中的“at+jwt”是啥?

Posted

技术标签:

【中文标题】我的 JWT 标头中的“at+jwt”是啥?【英文标题】:What is "at+jwt" in the header of my JWT?我的 JWT 标头中的“at+jwt”是什么? 【发布时间】:2022-01-21 02:23:15 【问题描述】:

我见过一些像这样的标记的标题。


  "alg": "HS256",
  "typ": "at+jwt"

我不清楚 at 代表什么,也不清楚它的含义。检查docs 并没有告诉我太多。谷歌搜索有点困难,因为关键字被视为介词。因此,那里的相关点击率也不多。

它是 IDS4(我们用来创建令牌的框架)特有的吗?那里也没有明显的记录,但这是通常的情况。我不会假设,因为我在context of Spring 中看到过它,但我太不确定了。

【问题讨论】:

也许这有帮助:tools.ietf.org/id/draft-bertocci-oauth-access-token-jwt-00.html 我猜它只是代表“身份验证令牌” @Jens 我已经检查了这篇文章,它让我非常烦恼,以至于他们从未说明 at 代表什么。如您所料,它可能是 authentication token,但也可能是 access tokenauth type... 我会觉得更多如果我在某处有一个 typ 字段的可能值列表,我很有信心。这看起来如此神秘和随机。 类型必须是'at+jwt'。为什么?如何?不开心... 也许是更好的资源:@​​987654324@ 【参考方案1】:

https://datatracker.ietf.org/doc/html/rfc9068

本规范注册了“application/at+jwt”媒体类型, 可用于指示内容是 JWT 访问令牌。 JWT 访问令牌必须在“typ”标头中包含此媒体类型 显式声明 JWT 表示访问的参数 符合此配置文件的令牌。根据“类型”的定义 [RFC7515] 的第 4.1.9 节,建议“应用程序/” 前缀被省略。因此,使用的“典型”值应该是 “at+jwt”。有关详细信息,请参阅安全注意事项部分 防止 OpenID Connect ID 令牌的重要性(定义为 [OpenID.Core] 的第 2 节)被接受为访问令牌 实现此配置文件的资源服务器。

另请参阅https://datatracker.ietf.org/doc/html/rfc9068#section-4,了解您必须如何验证此配置文件后的令牌。

【讨论】:

它回答了我的问题,但给我留下了一种信息空洞的感觉。我开始明白typ 的合法值没有详尽而明确的列表。尽管如此,我还是很想从根本上了解我作为它的价值出现的其他什么(合理地,实际上是)。是否常见,例如typ:it+jwt,其中 it 将是 identity token 派生自 ataccess token?我也有点不清楚明确要求 JWT 在其标头中声明为访问令牌的好处是什么。需要详细说明吗? 引用datatracker.ietf.org/doc/html/rfc8725#section-3.11 使用显式类型 有时,一种 JWT 可能会与另一种混淆。如果某种特定类型的 JWT 容易受到这种混淆,则该 JWT 可以包含显式 JWT 类型值,并且验证规则可以指定检查类型。这种机制可以防止这种混乱。显式 JWT 类型是通过使用“typ”标头参数完成的。 typ 值是排除了“application/”部分的常规 mime 类型。 基本上这可以防止一个没有互斥验证规则的 JWT 在不应该使用的地方被混淆和接受。

以上是关于我的 JWT 标头中的“at+jwt”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确处理标头中的 JWT

如何从 JWT 标头中获取值到 nodejs 中的变量中?

如何使用标头中的用户 JWT 令牌转发授权并将其与 cookie 中的 JWT 令牌进行比较以验证用户?

在给定 JWT 标头的情况下选择 JWKS 中的键

未从响应标头中的后端获取 JWT 令牌

从打字稿中的 Set-Cookie 标头中获取 jwt 值