gpt4 book ai didi

Azure AD : Roles claims missing in access token

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

对于我的应用程序,我希望用户能够使用其 Azure 帐户登录(单点登录)。我还需要一个访问 token 来访问安全后端。因此,我可以通过对此网址的请求来获取 id_tokenaccess_token:

https://login.microsoftonline.com/MY_TENANT_ID/oauth2/authorize?response_type=id_token+token&client_id=MY_CLIENT_ID&state=SOME_STATE&redirect_uri=MY_REDIRECT_URI&scope=openid profile&resource=MY_CLIENT_ID&nonce=SOME_NONCE

这基本上可行,但我还希望在访问 token (和 id token )中拥有角色,但角色不包含在我收到的 token 中。

当我使用此网址仅获取 id_token 时,包含角色声明:

https://login.microsoftonline.com/MY_TENANT_ID/oauth2/authorize?response_type=id_token&client_id=MY_CLIENT_ID&state=SOME_STATE&redirect_uri=MY_REDIRECT_URI&scope=openid profile&nonce=SOME_NONCE

不同之处在于我仅请求 id_token 而不是 token,并且省略了 resource 参数。

我的问题是:为什么第一个请求的 token 中没有包含角色声明?我可以通过哪些选项来获取带有角色声明的 id_tokenaccess_token

编辑:这是应用程序 list 中定义应用程序的方式:

{
"appId": "MY_CLIENT_ID",
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Admin",
"id": "c200e304-fff3-49f1-a4df-e406741ea690",
"isEnabled": true,
"description": "Bla bla",
"value": "admin"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Reader",
"id": "c534f351-b343-48d0-9dd7-ecb4c5cb402d",
"isEnabled": true,
"description": "Bla bla",
"value": "reader"
}
],
"availableToOtherTenants": false,
...
}

最佳答案

我也可以重现这个问题。不确定这是一个错误还是设计使然,我发现这个问题仅在我们获取应用程序自身的 token 时才会发生。例如,如果我们将资源替换为 Azure AD Graph,则角色声明可以在 id_token 中成功发出。

作为此问题的解决方法,我建议您在第一个请求中获取 id_token。然后,您可以使用 adal 库获取 iframe 中的访问 token ,而无需用户交互,因为用户已经登录。

关于Azure AD : Roles claims missing in access token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45956935/

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