Microsoft Graph - фильтрация пользователей по X500 proxyAddress - PullRequest
1 голос
/ 20 марта 2019

Можно ли запрашивать пользователей, отфильтрованных по прокси-адресу 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?

Ответы [ 3 ]

2 голосов
/ 21 марта 2019

Как и у Лизы - дело не в скобках. У меня есть любые лямбда-запросы на proxyAddresses с использованием адресов X500, содержащих круглые скобки, которые прекрасно работают в Graph Explorer.

Я подозреваю, что проблема заключается в размере строки поиска. Я повторяю ошибку, если размер строки поиска превышает 120 символов.

Я слежу за командой инженеров.

Тем временем Пол, как обходной путь (и извините, что у меня нет знаний по X500), есть ли способ сделать запрос, используя самую короткую строку X500?

Надеюсь, это поможет,

2 голосов
/ 20 марта 2019

Я могу использовать адреса X500 в качестве фильтров без изменения адреса из клона 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
*

и * 1006

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 голос
/ 25 марта 2019

Как ответил Дэн Кершоу - это жестко закодированное ограничение в 120 символов в фильтруемом адресе электронной почты.

Простой обходной путь - урезать адрес электронной почты (включая схему - «x500:» или «smtp:») до 120 символов и выполнять поиск, используя «startwith»:

/v1.0/users/?$filter=proxyAddresses/any(x:startswith(x, 'x500:/o=ExchangeLabs/ou=Exchange Administrative Group (blahblah)/cn=Recipients/cn=trimmed'))&$select=proxyAddresses

Это может возвращать более одного совпадения, поэтому в этом случае просматриваются все возвращенные пользователи и просматривается их коллекция «proxyAddresses», чтобы увидеть, какой из них соответствует исходному адресу без электронной почты, который ищется.

...