关于Microsoft Graph无法获取用户Windows域AD组的技术咨询
如何通过Microsoft Graph API获取Windows域Active Directory组列表
好问题!你完全可以拿到Windows域AD组的列表,但得调整下当前的Graph API调用方式——你现在用的memberOf端点搭配旧版API(1.6)默认只返回纯Azure AD组,而域AD组需要针对性处理,具体分两种场景:
场景1:域AD已通过Azure AD Connect同步到Azure AD
这是最普遍的情况,只要同步完成,就能通过Graph API获取域AD组,按以下步骤调整:
- 升级API版本:api-version=1.6太老旧了,建议改用稳定版
v1.0,调用地址改成:
这里的GET {graphResourceUri}/v1.0/me/memberOf?$filter=onPremisesSyncEnabled eq true$filter参数会帮你过滤掉纯Azure组,只保留从本地域AD同步过来的组(这类组的onPremisesSyncEnabled属性为true)。 - 确认权限配置:你的应用需要有足够权限,比如委派权限
User.Read.All(需用户同意)或应用权限Directory.Read.All(需管理员同意),务必确保权限已正确授予并生效。
之前调用返回空数组,除了用户没加入Azure组外,也可能是旧版API未返回同步过来的域组,升级版本加筛选后应该就能得到预期结果。
场景2:域AD未同步到Azure AD
这种情况下,Microsoft Graph API无法直接访问本地域AD资源——因为Graph API是针对Azure AD云端服务的接口,没法直接穿透到本地域控制器。这时候你需要直接查询本地域AD,比如用PowerShell的Get-ADGroupMember命令,或者通过ADSI编写代码来获取组列表。
总结一下:只要域AD组同步到了Azure AD,调整Graph API调用就能实现需求;如果没同步,就得换本地查询的方式。
内容的提问来源于stack exchange,提问作者Post Impatica
相关产品推荐
相关产品推荐

