Назад | Перейти на главную страницу

Фильтр поиска LDAP для Active Directory

Я пытаюсь найти пользователей в Active Directory с помощью запроса LDAP. В основном я ищу пользователя таким образом:

Search DN: dc=mydomain, dc=com
Filter: (sAMAccountName=USER)  where USER is replaced with the provided username.

Теперь, если USER - это только имя пользователя без домена (например, «Джо»), это работает нормально. Однако я получаю их в форме (домен \ имя пользователя, например, «мойДомен \ Джо»), и, очевидно, поиск не выполняется.

Я вижу два пути:

Я не специалист по LDAP и даже не знаю, можно ли использовать регулярные выражения в фильтрах поиска.

Кто-нибудь знает, возможно ли это и как?

P.S. Я не могу предварительно обработать имя пользователя, чтобы удалить домен. Это нельзя изменить, поскольку все это часть большой системы.

Если вы используете * nix box, используйте утилиты openldap, и поиск будет простым. пример

ldapsearch -h servername -b "dc=domain,dc=com" -D bindid@domain.com -W -x sAMAccountName=username

userPrincipalName: username@domain.com

Я не уверен, можно ли использовать регулярное выражение внутри фильтра. Напишите сценарий, который выгружает вывод в файл и реализует регулярное выражение.

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

В Active Directory служба LDAP содержит информацию только из домена, контроллером которого является DC. Если у вас есть доверительные отношения с другими доминантами в лесу, для получения информации о пользователях из другого домена вам следует связаться со службой LDAP из этого домена.

Правильное решение: исключить доменное имя из поискового фильтра. Атрибут sAMAccountName уникален в домене.

LDAP поддерживает подстановочные знаки, но я не знаю о регулярных выражениях (возможно, некоторые конкретные реализации могут)

Вы можете использовать следующий фильтр:

(|(sAMAccountName=USER)(sAMAccountName=*\USER))

Что будет соответствовать либо имени пользователя, либо некоторым символам, обратной косой черте и имени пользователя.

В зависимости от того, какой инструмент вы используете, это повлияет на то, как или нужно ли вам избегать обратной косой черты.

Доменное имя Pre-Win2k не является частью атрибута sAMAccountName. Если вы хотите найти домен в имени пользователя ... используйте userPrincipleName, который представляет собой формат username @ domainFQDN Ex: joe.smith@corp.com