关于Microsoft Graph API获取指定应用角色用户的技术咨询
解决方案
正确的API调用方法
你可以通过在appRoleAssignedTo接口中添加双重过滤条件,直接获取目标应用中分配了指定角色的用户,避免无关数据:
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='{ApplicationA的appId}')/appRoleAssignedTo?$filter=appRoleId eq '{目标角色的GUID}' and principalType eq 'User'
如果需要获取用户的完整属性(比如邮箱、姓名等),可以添加$expand=principal来关联用户详情:
GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='{ApplicationA的appId}')/appRoleAssignedTo?$filter=appRoleId eq '{目标角色的GUID}' and principalType eq 'User'&$expand=principal
为什么之前的方法失效
/users端点的过滤限制:Microsoft Graph不支持在/users接口中通过$expand=appRoleAssignments后,对appRoleAssignments的属性进行$filter,这是你收到Request_UnsupportedQuery错误的直接原因。- 未正确使用
appRoleAssignedTo的过滤:该接口本身支持OData过滤,你之前未添加appRoleId和principalType的过滤条件,才会返回大量无关条目。
权限要求
确保你的应用或账号拥有以下权限之一(根据身份验证类型选择):
- 委派权限:
Directory.Read.All、AppRoleAssignment.Read.All - 应用权限:
Directory.Read.All、AppRoleAssignment.Read.All
内容的提问来源于stack exchange,提问作者Petr Klekner
相关产品推荐
相关产品推荐

