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


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

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

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

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

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

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

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

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


5
2018-05-20 09:30


Источник


какой инструмент вы используете для запросов ldap? - Jim B


Ответы:


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

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

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


3
2018-05-20 12:27





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

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

userPrincipalName: username@domain.com

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


2
2018-05-20 20:09





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

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

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

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

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


0
2018-05-20 20:17





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


0
2017-11-07 21:09