Мой запрос LDAP возвращает нулевые результаты, хотя я вижу, что атрибут DistinguishedName содержит строку в запросе - PullRequest
0 голосов
/ 21 февраля 2019

У меня очень простой запрос: (distinguishedName=*Inactive*), который возвращает результаты ZERO, но я вижу, что строка "Неактивно" содержится в некоторых объектах AD.

То, что я хотел бы сделать, - это возможность искать в этих подразделениях пользователей, но исключая подразделение пользователей, которое находится внутри этого неактивного подразделения.Выполнение предыдущего запроса было (я думал) ответом на мою проблему, но я не получил никаких результатов,

Заранее благодарю за помощь.

LDAP

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

После большого исследования я обнаружил следующее:

Я могу фильтровать по атрибуту LDAP userAccountControl ...

На основании объяснения службы поддержки Microsoft:

Этот атрибут состоит из комбинации различных флагов.Флаг для установки объекта, который вы хотите отключить, - UF_ACCOUNTDISABLE, который имеет значение 0x02 (2 десятичных знака).Фильтр побитового сравнения, который задает userAccountControl с набором битов UF_ACCOUNTDISABLED, будет выглядеть примерно так:

(!(UserAccountControl:1.2.840.113556.1.4.803:=2))

Вы можете спросить себя, что это за число и каково их значение?

Вот ответы:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc961749(v=technet.10)

и варианты флага: https://blogs.technet.microsoft.com/mempson/2011/08/24/useraccountcontrol-flags/

0 голосов
/ 25 февраля 2019

Active Directory не позволяет вам искать частичное совпадение на distinguishedName.Если в запросе указано distinguishedName, это может быть только точное совпадение.

Если вы хотите искать только определенные OU, вам потребуется:

  1. Поиск одногоOU, установив SearchRoot для OU, а не для домена.Вы также можете установить SearchScope на SearchScope.OneLevel, чтобы не выполнять поиск в подразделениях, если хотите.Повторите поиск для каждого OU, который вы хотите включить.
  2. Найдите самый верхний OU с нужными вам результатами, просматривайте результаты и отбрасывайте результаты в неактивном OU, просматривая distinguishedName (поскольку у вас уже есть результаты на данный момент, distinguishedName - это просто строка, с которой вы можете делать все, что захотите, включая частичное совпадение).

Я бы порекомендовал # 2, поскольку это означаетодин поиск против AD вместо нескольких.Это будет быстрее.

И да, вы можете использовать userAccountControl в качестве фильтра для исключения отключенных учетных записей, но это зависит от того, можете ли вы исключить отключенные учетные записи, которые могут отсутствовать в неактивном подразделении.или включая включенные учетные записи, которые могли оказаться в неактивном подразделении.

0 голосов
/ 21 февраля 2019

Как правило, вы не можете сделать правило соответствия подстроки для отличительного имени

Как обсуждено в этой теме .

Кроме того, многие реализации сервера LDAP поддерживают ExtensibleMatch однако Microsoft Active Directory НЕ поддерживает эту функцию и поддерживает только: Правила соответствия Microsoft Active Directory

...