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

如何通过Microsoft Graph获取AAD组嵌套子组成员身份

AAD嵌套组成员拉取方案

你之前调用的Members接口仅会返回目标组的直接成员,不会自动递归遍历所有嵌套子组下的对象,这是你无法获取嵌套用户的核心原因。要拉取父组下所有嵌套子组包含的全量用户,需要调用Graph提供的传递成员接口,该接口在SDK中就是你期望的链式调用形式。

可直接运行的实现代码

// 查询匹配名称的目标父组
var groups = await graphClient.Groups
    .Request()
    .Filter($"startswith(displayName, '{Se_groupName}')")
    .GetAsync();
var targetGroup = groups.FirstOrDefault();
if (targetGroup == null)
{
    // 自行补充未找到目标组的业务处理逻辑
    throw new ArgumentException("未找到匹配指定名称的AAD组");
}

// 获取所有嵌套层级下的传递成员,可按需过滤仅返回用户对象
var allNestedUsers = await graphClient.Groups[targetGroup.Id]
    .TransitiveMembers
    .Request()
    // 加过滤条件排除返回的嵌套组对象,仅保留用户
    .Filter("isOf('microsoft.graph.user')")
    .GetAsync();

返回空结果的排查要点

如果调整接口后依然获取不到数据,优先检查两项配置:

  • 权限配置:你的AAD应用需要给Microsoft Graph授予GroupMember.Read.All(最小权限)或Directory.Read.All权限,委托权限场景下需要登录账号有对应组的成员查看权限,应用权限场景下需要完成租户管理员同意
  • 组配置:如果目标组是邮件启用的安全组/分发组,需要确认组属性没有开启hideFromAddressLists、hideFromOutlookClients这类隐藏成员可见性的配置

提示:TransitiveMembers接口会自动完成全层级嵌套组的递归遍历,支持AAD允许的最大组嵌套深度,不需要你手动编写递归逻辑逐个查询子组成员。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:42:27