#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 в качестве имени пользователя спасибо