Microsoft Entra ID Oauth2 客户端凭据和组声明

问题描述 投票:0回答:1

我在 Azure 门户上创建了一个企业应用程序,分配了一个名为

TEST_GPR
的组。

现在我尝试使用 client_credentials 流程生成 access_token:

curl --location 'https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=xxxx' \
--data-urlencode 'client_secret=xxx' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=https://graph.microsoft.com/.default'

这将返回 jwt 令牌,但没有任何组或角色声明。我启用了团体声明但没有成功:

enter image description here

azure oauth-2.0 microsoft-entra-id
1个回答
0
投票

注意:组声明只能在用户上下文流中配置。客户端凭据流是非用户交互流,因此组声明不会显示在客户端凭据流生成的访问令牌中。

  • 客户端凭证流程不允许通过配置自定义声明来自定义访问令牌。
  • 只有像
    displayname
    objectid
    tags
    这样的声明只能在客户端凭证流程中使用。

要在访问令牌中显示组声明,您需要切换到用户交互流程,如下所示:

enter image description here

使用授权代码流程生成访问令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
scope:api://xxx/groups.read
grant_type:authorization_code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
code:code

enter image description here

现在组声明已成功显示在访问令牌中

enter image description here

参考:

jwt - Azure 的 EntraID 支持动态自定义声明吗? - Stack Overflow 由我

© www.soinside.com 2019 - 2024. All rights reserved.