You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于appRoleId过滤查询Azure AD中的appRoleAssignments?

正确筛选指定appRoleId分配用户的解决方案

问题根因

你遇到的报错是因为/servicePrincipals/{id}/appRoleAssignedTo接口本身不支持服务端对appRoleId字段做筛选,无论你是否给GUID加引号都无法通过该接口直接过滤。

可行方案

方案1:本地过滤(适合分配记录数量较少的场景)

直接调用无筛选条件的接口拉取全量分配记录:

GET /servicePrincipals/{你的服务主体ID}/appRoleAssignedTo

拿到所有返回结果后,在你自己的业务代码中过滤appRoleId等于目标值的条目即可。

方案2:换用全局appRoleAssignment查询接口(适合分配记录数量大的场景)

直接调用支持服务端筛选的全局接口,写法如下:

GET https://graph.microsoft.com/v1.0/appRoleAssignments?$filter=appRoleId eq {目标appRoleID} and resourceId eq {你的服务主体ID}

注意两个筛选条件的要求:

  • resourceId就是你要查询的企业应用对应的服务主体对象ID,必须添加该条件,否则会返回整个租户内所有分配了该appRoleId的记录,不局限于你的目标应用
  • appRoleId不需要加单引号,直接填写对应的GUID值即可
  • 调用该接口需要提前申请Directory.Read.All及以上的Graph权限(委托或应用权限均可),并完成管理员同意。

内容的提问来源于stack exchange,提问作者Ahsan Habib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:06:05