LDAP: использование фильтра, чтобы избежать sub CN в Active Directory - PullRequest
3 голосов
/ 19 февраля 2010

Я пытаюсь запросить почти всех пользователей в Active Directory. Мои обычные пользователи находятся в разных подразделениях, и я хочу получить их. Но пользователи моей системы хранятся в CN пользователей, и я не хочу их получать.

Это похоже на другой вопрос , но их ответ мне не помог. Я использую подсказку здесь , но это тоже не помогает.

Я запрашиваю в Active Directory, используя JNDI. Мой запрос:

(&(objectClass=user)(!(cn:dn:=Users)))

Это означает все объекты класса user, которых нет в поддереве Users. Тем не менее, этот запрос тем не менее возвращает что-то вроде этого:

CN=__vmware__,CN=Users,DC=SIREDRM,DC=com

Итак, почему этот фильтр не работает? Как еще я могу заставить это работать?

1 Ответ

7 голосов
/ 22 февраля 2010

С помощью (! (Отличительное имя = *, CN = Пользователи = DC = mydomain, DC = com)) вы пытаетесь использовать атрибут с синтаксисом DN [Объект (DS-DN)], для этих атрибутов LDAP вы нельзя использовать подстановочные знаки в фильтрах LDAP.

Атрибут «Отличительное имя»: http://msdn.microsoft.com/en-us/library/ms675516%28VS.85%29.aspx

Синтаксис LDAP "Объект (DS-DN)" http://msdn.microsoft.com/en-us/library/ms684431%28VS.85%29.aspx

Во второй ссылке вы найдете утверждение о запрещенном шаблоне.

Как правило, вы можете использовать расширяемое правило сопоставления LDAP для исключения некоторых контейнеров из поиска по поддереву, в вашем случае синтаксис будет аналогичен этому

(!(cn:dn:=Users))

или что-то в этом роде. Плохая вещь: AD также не поддерживает такие расширяемые соответствия: http://msdn.microsoft.com/en-us/library/cc223241%28PROT.10%29.aspx Прочитайте первый абзац.

Таким образом, вывод таков: ВЫ НЕ МОЖЕТЕ ДЕЛАТЬ ЭТО С ОДНИМ ЕДИНЫМ ФИЛЬТРОМ В СРЕДЕ АКТИВНОЙ КАТАЛОГИ. К сожалению.

Похоже, единственным решением является использование инструмента на стороне клиента. Сценарий от Microsoft покажет вам, как именно вам нужно (кроме пользователей, а не компьютеров).

http://blogs.technet.com/heyscriptingguy/archive/2004/12/07/how-can-i-return-a-list-of-all-my-computers-except-those-in-a-specified-ou.aspx

Другая вещь, на которую вы могли бы обратить внимание, - это виртуальный каталог, действующий в качестве прокси для AD, который позволял бы вам настраивать фильтры и разрешения, не касаясь AD.

(в основном скопировано с сайта дефиса )

...