如何基于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
相关产品推荐
相关产品推荐

