是否可以通过X500代理地址查询用户?
使用以下按SMTP地址过滤的查询,我可以返回所有代理地址:
/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'smtp:me@here.com')&$select=proxyAddresses
但是,如果我使用上述查询中返回的X500地址之一,然后尝试通过该地址进行过滤:
/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'x500:/o=ExchangeLabs/ou=Exchange Administrative Group (blahblah)/cn=Recipients/cn=trimmed')&$select=proxyAddresses
然后我得到400:
{
"error": {
"code": "Request_UnsupportedQuery",
"message": "Unsupported or invalid query filter clause specified for property 'proxyAddresses' of resource 'User'.",
"innerError": {
"request-id": "adcdefg",
"date": "2019-01-01T01:01:01"
}
}
}
我已经尝试对地址进行URL编码,并且尝试使用和不使用“ X500:”方案。
是否支持按X500地址过滤?
答案 0 :(得分:2)
我可以使用X500地址作为过滤器,而无需对clone of GraphExplorer中的地址进行任何修改。以下查询均返回正确的用户记录
https://graph.microsoft.com/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'x500:/o=Company Exchange/ou=First Administrative Group/cn=Recipients/cn=UIDHere')&$select=proxyAddresses
和
https://graph.microsoft.com/v1.0/users/?$filter=proxyAddresses/any(x:x eq 'X500:/o=Company Exchange/ou=External (FYDIBOHF25SPDLT)/cn=Recipients/cn=z804261192zc46c4az4f6032z322540z')&$select=proxyAddresses
答案 1 :(得分:2)
像Lisa一样-这与括号无关。我对使用包含括号的X500地址的proxyAddresses进行了任何lambda查询,这些括号在Graph Explorer中工作得很好。
我怀疑问题实际上是搜索字符串的大小。如果搜索字符串的大小大于120个字符,我会重现该错误。
我正在跟工程团队联系。
同时,Paul作为一种变通办法(并且对我缺乏X500知识表示歉意),有没有办法使用最短的X500字符串进行查询?
希望这会有所帮助
答案 2 :(得分:1)
如丹·克肖(Dan Kershaw)回答-这似乎是要过滤的电子邮件地址中120个字符的硬编码限制。
一种简单的解决方法是将电子邮件地址(包括方案-“ x500:”或“ smtp:”)修剪为120个字符,然后使用“ startswith”进行搜索:
/v1.0/users/?$filter=proxyAddresses/any(x:startswith(x, 'x500:/o=ExchangeLabs/ou=Exchange Administrative Group (blahblah)/cn=Recipients/cn=trimmed'))&$select=proxyAddresses
这可能会返回多个匹配项,因此这是一种查看每个返回用户并查看其“ proxyAddresses”集合的情况,以查看哪个匹配要搜索的原始未修剪电子邮件地址。
答案 3 :(得分:1)
我可以确认到今天为止这仍然是一个问题。
我实际上正在使用利用Graph API的AzureAD PowerShell cmdlet。
直到找到该线程,我才能弄清楚为什么查询失败,所以谢谢。
我在PowerShell中得到了基本上相同的错误消息: “为资源“组”的属性“ proxyAddresses”指定了不受支持或无效的查询过滤器子句。”
当我使用前120个字符的子字符串并运行startsWith时,效果很好。
很遗憾,这个问题仍未解决。