【问题标题】:Azure AD access token does not contain groups claimAzure AD 访问令牌不包含组声明
【发布时间】:2021-12-31 13:13:59
【问题描述】:

我正在使用 curl 命令获取访问令牌,我可以使用带有客户端凭据的 curl 命令获取访问令牌。

curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' -d 'grant_type=client_credentials&client_id={client_id}&client_secret={secret}' https://login.microsoftonline.com/{tentant_id}/oauth2/v2.0/token

但访问令牌不包含组声明。

如何在访问令牌中获取组..?任何帮助表示赞赏

【问题讨论】:

  • 嗨 Siddu,IMO,应该在为其颁发令牌的资源应用程序上启用组声明。在上述请求中,被认证的客户端应用程序就像一个应用程序帐户。根据上述请求,您正在使用 v1 /token 端点 - 默认资源为:Windows Azure Active Directory。我的建议是使用 v2 /token 端点并明确设置范围参数来定义资源应用程序。资源应用应启用所需的组声明配置,以便在身份验证身份的令牌中传递。
  • 我尝试使用v2/token 仍然是同样的问题,没有收到任何群组声明

标签: azure azure-active-directory access-token azure-ad-graph-api


【解决方案1】:

您可以参考this document

如果您使用公开 API 选项公开 Web API,那么您 也可以选择“访问”部分下的“组 ID”选项。

因此,当您在 Token configuration Blade 中添加群组声明时,您需要在“访问”中选择“群组 ID”

并且您还需要在 azure 门户中查看 azure 广告应用的清单文件,如果 groupMembershipClaims 声明为空值,您可以将其设置为 All,参见 this section

如果您需要为您的 azure 广告应用添加组,请转到 azure 广告 -> 企业应用程序 -> 查找您的应用 -> 用户和组

然后你需要“公开一个api”,关注this document,然后你需要在你的azure广告应用程序中添加用于生成访问令牌的api权限。

下面的截图是 ropc flow 生成的访问令牌。但实际上,我使用客户端凭据流进行测试,我无法获得groups 声明。在我看来,这是因为客户端凭据流与用户无关,甚至与用户组无关。

【讨论】:

  • 我的要求是在访问令牌中获取组声明。我们有服务帐户,并将使用相同的服务帐户凭据来获取访问令牌。所以需要在访问令牌中获取组声明
  • 嗨 Siddu,正如我在上面的评论中提到的,只是想验证:您是在与用于登录的服务帐户对应的应用程序上添加组声明配置还是添加组声明获取令牌的资源应用程序的设置(即 v2 API 的范围声明)?我做了一个 PoC,当在“资源应用”上启用组设置时,它确实适用于客户端凭据工作流。
  • @Sidduh 你看不到我上面截图中的groups 声明吗?这是从 ROPC 流生成的访问令牌中解码的。还是我在某个地方误解了?
  • @ChintanRajvir,我在应用程序上添加了组声明(天蓝色广告 -> 企业应用程序 -> 查找您的应用程序 -> 用户和组)。我正在使用客户端凭据获取访问令牌,但我仍然看不到访问令牌中的组。
猜你喜欢
  • 2020-01-16
  • 2018-12-31
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 2021-05-26
  • 2018-02-07
  • 2021-12-27
  • 2019-06-21
相关资源
最近更新 更多