如何通过一次API调用获取Microsoft Azure应用的全部appRoleAssignedTo
一次调用获取全量servicePrincipal对应的appRoleAssignedTo数据
你可以直接调用租户级的应用角色分配查询接口,无需逐个传入服务主体ID发起请求:
- 基础调用示例:
GET https://graph.microsoft.com/v1.0/appRoleAssignments
该接口会返回租户内所有应用角色分配记录,每条记录的resourceId字段对应作为资源的服务主体ID,你也可以添加筛选条件直接过滤出资源为服务主体的分配记录:GET https://graph.microsoft.com/v1.0/appRoleAssignments?$filter=resourceType eq 'ServicePrincipal',将返回结果按resourceId字段分组后,就能得到每个服务主体对应的全部appRoleAssignedTo数据。 - 注意事项:调用该接口至少需要Application.Read.All或Directory.Read.All的应用权限/委托权限;如果租户内分配数据量较大,接口会返回分页标记
@odata.nextLink,按标记逐页拉取即可获取全量数据。
监听appRoleAssignedTo变更的方案
servicePrincipal的delta接口本身不支持扩展返回appRoleAssignedTo的关联变更,你尝试$expand参数无效属于预期行为。不需要调整servicePrincipal delta接口的配置,直接使用应用角色分配本身的delta接口即可满足需求:
- 调用示例:
GET https://graph.microsoft.com/v1.0/appRoleAssignments/delta
该接口会返回所有应用角色分配的变更记录,每条变更记录自带resourceId(对应变更所属的服务主体ID)、appRoleId、principalId等核心字段,你可以直接根据resourceId关联到对应服务主体。首次调用可以拉取全量基准数据,后续使用返回的@odata.deltaLink轮询即可只获取增量变更。
内容的提问来源于stack exchange,提问作者Shambhavi Rai
相关产品推荐
相关产品推荐

