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

扩展Azure Active Directory访问令牌声明:API组授权问题咨询

解决Azure AD组声明仅出现在ID Token而非Access Token的问题

我之前刚好碰到过一模一样的情况,默认开启组声明后确实只有id_token会带groups信息,要让access_token也包含这些组数据,你需要针对你的目标API单独配置声明映射,具体步骤如下:

1. 定位到你的API应用注册

在Azure AD的应用注册列表里,找到你要保护的那个API(也就是用户请求access_token时,aud字段对应的应用)——别搞错成客户端应用了,必须是资源端的API应用。

2. 配置组声明到Access Token

进入这个API应用的**「令牌配置」**页面:

  • 点击**「添加组声明」**,弹出配置窗口后:
    • 先选择你要包含的组类型:安全组、Microsoft 365组,或者两者都选
    • 重点!在**「令牌类型」选项里,一定要勾选「Access」**(默认可能只勾选了ID,这就是为什么只有id_token有组信息)
    • 然后选择组的标识符格式:推荐用组ID(唯一不重复),如果需要可读性也可以选组名称(注意重名风险),同步的AD组还能选sAMAccountName
    • 最后保存配置

3. 验证配置效果

让用户重新发起授权流程获取新的access_token,用JWT解码工具解析后,就能看到groups声明已经出现在access_token里了。

额外提醒

  • 如果你的组数量超过150个,Azure AD会自动触发“组筛选”机制,这时候token里只会返回hasgroups声明,还是得调用Graph API,但组数量少的话就不会有这个问题
  • 如果你需要自定义声明键(比如不想用默认的groups,想改成user_roles之类的),可以在**「令牌配置」里添加「自定义声明」**:
    • 源类型选「组」,源属性选你要的组字段(比如组名称)
    • 目标声明名称填自定义的键,令牌类型选「Access」
    • 保存后新的access_token就会带上这个自定义声明

这样配置完,你就能直接从access_token里提取组信息做授权判断,完全不用依赖Graph API了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:04:41