Microsoft Graph中onPremisesExtensionAttributes属性过滤查询问询
解决Microsoft Graph过滤onPremisesExtensionAttributes的问题
我来帮你搞定这个过滤的问题——你尝试的第二个查询路径其实是对的,但可能是因为一些容易忽略的细节导致没生效,下面给你拆解正确的用法和排查要点:
正确的查询语法
首先,确认使用**onPremisesExtensionAttributes/extensionAttribute1**这个完整路径来过滤,正确的请求应该是:
GET https://graph.microsoft.com/v1.0/users?$filter=onPremisesExtensionAttributes/extensionAttribute1 eq 'attr1'
(也可以用beta版本,但v1.0已经支持这个过滤,更推荐用稳定版)
为什么你的尝试没成功?
大概率是以下几个原因之一:
- 权限不足:要过滤用户的扩展属性,你需要至少拥有
User.Read.All(委派权限)或Directory.Read.All(应用权限)的权限,而且必须是已授予的权限(不是仅同意的)。如果用的是委派权限,登录的用户还需要有足够的目录访问权限。 - 属性未同步到Azure AD:
onPremisesExtensionAttributes是从本地AD同步过来的属性,如果你的本地AD里的extensionAttribute1没有通过AD Connect同步到Azure AD,那Graph里根本查不到这个值,自然过滤不到结果。可以先单独获取一个用户的详情,确认onPremisesExtensionAttributes下的对应属性确实存在且有值。 - null值干扰:如果大部分用户的
extensionAttribute1是null,Graph的过滤不会自动排除这些,但你的查询是匹配等于'attr1'的,所以这个影响不大,但可以加上and onPremisesExtensionAttributes/extensionAttribute1 ne null来明确排除null的情况。
额外注意事项
- 扩展属性的过滤只支持
eq、ne、startswith这些基础操作,不支持contains这类模糊匹配(至少在v1.0里是这样)。 - 确保请求的头部里包含有效的身份验证令牌,令牌的受众是
https://graph.microsoft.com。
内容的提问来源于stack exchange,提问作者Michael Tucker
相关产品推荐
相关产品推荐

