如何使用Microsoft Graph获取目标应用的所有角色分配?
获取指定目标应用的所有App角色分配
你可以直接通过Microsoft Graph的appRoleAssignments集合接口,结合$filter参数过滤出目标应用的所有角色分配,无需遍历所有服务主体。核心是利用resourceId字段匹配目标应用的服务主体ID(注意:这里要用服务主体ID,而非应用注册的客户端ID;如果只有客户端ID,可先查询对应服务主体)。
直接查询目标应用的角色分配代码示例
using Azure.Identity; using Microsoft.Graph; var graphClient = new GraphServiceClient(new DefaultAzureCredential()); // 替换为目标应用的服务主体ID string targetServicePrincipalId = "<target-app-service-principal-id>"; // 获取所有分配给该目标应用的角色分配 var assignments = await graphClient.AppRoleAssignments .GetAsync(requestConfiguration => { requestConfiguration.QueryParameters.Filter = $"resourceId eq '{targetServicePrincipalId}'"; });
若只有目标应用的客户端ID,先获取服务主体ID
// 通过客户端ID查询对应服务主体 var targetServicePrincipal = await graphClient.ServicePrincipals .GetAsync(requestConfiguration => { requestConfiguration.QueryParameters.Filter = $"appId eq '<target-app-client-id>'"; requestConfiguration.QueryParameters.Select = new[] { "id" }; }); string targetServicePrincipalId = targetServicePrincipal.Value.FirstOrDefault()?.Id;
这种方式无需遍历所有服务主体,直接通过过滤条件精准获取目标应用的所有角色分配,效率更高。
内容的提问来源于stack exchange,提问作者twoflower
相关产品推荐
相关产品推荐

