gpt4 book ai didi

Azure access_token 包含我认为会在 id_token 中的信息,反之亦然

转载 作者:行者123 更新时间:2023-12-02 08:18:32 25 4
gpt4 key购买 nike

使用 implicit grant flow 从 Azure 请求 token 和 id_token 时使用类似的请求

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=token%20id_token
&redirect_uri=http%3A%2F%2Flocalhost
&scope=openid%20user.read
&response_mode=fragment
&state=12345
&nonce=678910

我成功收到带有“access_token”和“id_token”的响应。

根据我所读到的内容,在解码“id_token”时,我应该看到有关用户的信息(如姓名、电子邮件、图片等),而应该使用“access_token”(不应解码)用作“授权” header 中的“承载” token 。

当我使用 https://jwt.ms 查看 token 详细信息时“access_token”是包含用户详细信息的 token ,而“id_token”则没有。

当我尝试使用“access_token”访问我的 API 时,它不允许,但如果我使用“id_token”访问它,它就会允许。

这似乎与文档相矛盾,所以我想知道是否有人可以帮我澄清?

最佳答案

您是对的 - ID token 为您的应用程序提供有关经过身份验证的用户的信息,访问 token 是您应该用来访问 MS API 的 token 。也就是说,请注意以下几点。

When I view the token details with https://jwt.ms the "access_token" is the one with the user details, and the "id_token" has none.

“用户详细信息”是什么意思?通常,访问 token 将包含有关用户的一些详细信息,API 需要这些详细信息来执行正确的授权。通常是 sub 声明,但也可能有一些其他声明。另请注意,默认情况下,ID token 也不携带太多有关用户的信息。您必须请求其他 openID 范围,例如 profileemail 才能获取有关 ID token 中的用户的更多信息。以下是您可以在 ID token 中找到哪些声明以及应请求哪些范围才能获取这些声明的文档:https://learn.microsoft.com/en-us/azure/active-directory/develop/id-tokens .

When I try to access my API with the "access_token", it doesn't allow, but if I access it with the "id_token" it does.

“我的 API”是什么意思?是您从头开始创建的 API,还是您使用 Microsoft 工具部署的某些 API?您确定您的 API 配置为可以使用 Microsoft 的访问 token 进行访问吗?通常该 token 将用于访问 MS API,而不是您自己的。

关于Azure access_token 包含我认为会在 id_token 中的信息,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70867353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com