我有一个 Azure AD 应用程序并生成了两个客户端 key 。我可以使用每个 key 获取 JWT 访问 token (通过 client_credentials
grant),但我还可以从 JWT token 中查看请求的客户端 key 吗?
如果我检查返回的 JWT token ,一些有效负载字段始终相同(aud
、iss
等),而有些字段始终不同( iat
、nbf
、aio
等),但据我所知,没有任何信息可以识别所使用的客户端 key 。
这是一个示例有效负载:
{
"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"
}
相关说明:aio
、e_exp
和 uti
字段的用途是什么?我找不到有关他们的任何信息。
最佳答案
您无法查看 token 是通过哪个客户端 key 颁发的。到底是通过什么 secret 来询问的原因是什么?
关于提供的 claim - 您可以检查 here和 here不同的主张意味着什么。例如,iat、nbf 只是日期 - token 的颁发时间和有效性开始时间。
对于某些声明,例如aio
,没有文档。但没有声称可以告诉您使用了哪个 secret 。
关于oauth-2.0 - Azure AD JWT token : how to see through which client secret it was granted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49452093/