Azure AD JWT 令牌:如何查看授予它的客户端机密

Azure AD JWT token: how to see through which client secret it was granted

我有一个 Azure AD 应用程序并生成了两个客户端密码。我可以使用每个秘密获取 JWT 访问令牌(通过 client_credentials 授权),但我也可以从 JWT 令牌中看到它是通过哪个客户端秘密请求的吗?

如果我检查返回的 JWT 令牌,一些有效载荷字段总是相同的(audiss 等),而一些总是不同的(iatnbfaio、等等),但据我所知,没有任何信息可以识别所使用的客户端密码。

这是一个有效负载示例:

{
  "aud": "https://graph.microsoft.com",
  "iss": "https://sts.windows.net/e402c5fb-58e9-48c3-b567-741c4cef0b96/",
  "iat": 1516886787,
  "nbf": 1516886787,
  "exp": 1516890687,
  "aio": "Y2NgYEjJqF0stqv73u41a6ZmxPEvBgA=",
  "app_displayname": "TravelAgencies",
  "appid": "ee8cf944-bf6f-42cf-ae30-6060412416a1",
  "appidacr": "2",
  "e_exp": 262800,
  "idp": "https://sts.windows.net/e402c5fb-58e9-48c3-b567-741c4cef0b96/",
  "oid": "bc430bc6-d9fb-4fa0-87e5-8b8803fcb222",
  "sub": "bc430bc6-d9fb-4fa0-87e5-8b8803fcb222",
  "tid": "e402c5fb-58e9-48c3-b567-741c4cef0b96",
  "uti": "1TgusyfGtECjErT0Kv4PAA",
  "ver": "1.0"
}

相关说明:aioe_exputi 字段有什么用?我找不到关于它们的任何信息。

您看不到令牌是通过哪个客户端密钥颁发的。问是通过哪个密室的原因是什么?

关于提供的声明 - 您可以查看 here and here 不同声明的含义。例如,iatnbf 只是日期 - 令牌发布时间和有效期开始时间。

对于某些声明,例如 aio,没有文档。但是没有声明可以告诉你使用了哪个秘密。

来自https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens

aio Azure AD 用于记录数据以供令牌重用的内部声明。应该忽略。