You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS+Azure APIM+Entra ID(PKCE):如何在令牌中获取AD安全组?

解决Entra ID令牌中未直接返回应用分配组ID的问题

针对你遇到的问题,以下是具体的排查和解决步骤:

1. 修正企业应用的组分配对象

你当前的组分配逻辑有误——ApplicationGroup类型的组声明,指的是用户通过安全组被分配到API的企业应用,而非客户端应用。正确操作:

  • 进入Entra ID的「企业应用」,找到你的API对应的企业应用
  • 转到「用户和组」,添加目标AD安全组(确保测试用户属于该组)
  • 客户端应用的企业应用无需分配组,ApplicationGroup仅关注用户对API的分配关系

2. 配置API应用的令牌声明

在API应用注册的「令牌配置」中,主动添加groups声明:

  • 点击「添加声明」,选择「组」类型
  • 选择「分配给应用的组」作为数据源,勾选「访问令牌」(确保调用APIM的访问令牌中包含组ID)
  • 保存配置

3. 验证客户端应用的权限设置

确保客户端应用配置的是API应用的Delegated权限且已完成管理员同意:

  • 进入客户端应用注册的「API权限」,清理无关权限,仅保留自身API的Delegated权限
  • 确认权限状态为「已授予管理员同意」

4. 确认获取的是API的访问令牌

测试脚本需确保请求的是针对API的访问令牌,而非客户端的ID令牌:

  • 请求令牌时,scope参数必须设置为API应用暴露的范围(例如api://<API-App-ID>/access_as_user)
  • 解码令牌时,检查aud(受众)字段是否为API的应用ID URI,而非客户端应用ID

5. 重新获取令牌验证

修改配置后旧令牌不会生效,需清除登录缓存或重新发起授权流程,获取新令牌后再检查groups字段

额外排查点

  • 确认客户端应用清单中的groupMembershipClaims确实为"ApplicationGroup",无拼写错误或多值冲突
  • 核实测试用户仅属于被分配到API企业应用的那个安全组,无其他冗余组分配

内容的提问来源于stack exchange,提问作者ClaudeVernier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:22:08