如何使用B2C Graph API获取Azure用户的目录角色分配信息
解决方案
为什么之前的接口无返回
你调用的旧版Azure AD Graph的appRoleAssignments接口返回的是用户分配的应用程序自定义角色,和你要查询的Azure AD内置目录角色(如全局管理员)属于完全不同的资源范畴,所以无法拿到预期结果。
支持UPN传参的查询接口
目前推荐使用官方主推的Microsoft Graph接口,原生支持直接传入用户UPN代替用户ID作为路径参数:
1. 查询用户直接分配的目录角色
调用示例:
GET https://graph.microsoft.com/v1.0/users/{替换为用户UPN}/memberOf?$select=displayName,roleTemplateId
返回结果中过滤@odata.type为#microsoft.graph.directoryRole的条目,即为用户直接被分配的所有目录角色。
2. 查询用户包含组继承的所有目录角色
如果需要包含用户通过加入「支持角色分配的安全组」间接获得的目录角色,调用以下接口:
GET https://graph.microsoft.com/v1.0/users/{替换为用户UPN}/transitiveMemberOf?$select=displayName,roleTemplateId
同样过滤@odata.type为#microsoft.graph.directoryRole的条目即可。
前置要求
调用上述接口需要提前申请至少Directory.Read.All的API权限,委托权限场景下登录用户需要具备至少「目录读者」的Azure AD权限。
内容的提问来源于stack exchange,提问作者V.Mulik
相关产品推荐
相关产品推荐

