LDAP, DirectoryServices c# база поиска запросов

#c# #ldap #directoryservices

#c# #ldap #directoryservices

Вопрос:

Я пытаюсь использовать сервер LDAP, у которого есть логин клиента, который, по-видимому, должен быть простой привязкой (с выделенным именем).

 var clientEntry = new DirectoryEntry(
"LDAP://server.de",
"cn=medialibrary, ou=special users, dc=uni, dc=de",
"password",
AuthenticationTypes.None);

DirectorySearcher directorySearch = new DirectorySearcher(clientEntry, "(cn=searchuser");

SearchResult result = directorySearch.FindOne();
 

Соединение через DN работает нормально. Однако поиск cn=searchuser не возвращает пользователей (и ошибок).

Пользователь, которого мы пытаемся найти, находится в path:

ou= люди, dc= uni, dc=de

В утилите LDAP-Admin мы можем войти в систему, используя cn = medialibrary etc DN, и если мы затем изменим базу поиска на «ou = people, dc = uni-potsdam, dc = de», а затем выполним поиск, мы найдем запись cn = searchuser

Вопрос в том, что эквивалентно изменению базы поиска, которое мы можем сделать в этой утилите в коде C #?

(Целевой пользователь находится в ветке, отличной от ветки по умолчанию, указанной записью каталога, к которой я должен изначально привязаться.)

Я полагаю, что этот исходный URL-адрес каталога был опробован и не работал (разрешения?)

LDAP://server.de/ou=люди, dc=uni, dc=de

Ответ №1:

 string LDAPpAth = "dc=uni,dc=de"
string filter = "(cn=searchuser)"
string username = "medialibrary"
string password = "password"
DirectoryEntry startingPoint = new DirectoryEntry("LDAP://" LDAPpAth, username, password);
DirectorySearcher searcher = new DirectorySearcher(startingPoint);
searcher.Filter = filter;
 

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

Комментарии:

1. Я попросил клиента протестировать это, но они настаивают на необходимости DN. Я сам проведу серию тестов и снова включу это, но пока у нас может быть пример с DN в качестве имени пользователя спасибо