Microsoft Graph-通过X500 proxyAddress过滤用户

时间:2019-03-19 22:29:25

标签: azure-active-directory microsoft-graph

是否可以通过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地址过滤?

4 个答案:

答案 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时,效果很好。

很遗憾,这个问题仍未解决。