Позвольте мне представить некоторый контекст, над которым я работаю:
- Моя среда — это удаленный компьютер, подключенный через VPN, и ожидается, что сценарий будет запущен на других удаленных компьютерах.
- Сервер LDAP доступен удаленно через VPN на 389 порт.
- Этот сценарий, хотя и работает на .NET, должен быть независимым от ОС и работает на .NET 10+.
Код: Выделить всё
ldapsearch -x -H ldap://:389 -D "myDomain\MYUSER" -w MyPassword -b "baseDN" -LLL "(sAMAccountName=MYUSER)"
Проблема заключается в том, что я пытаюсь реализовать те же параметры соединения для подключения к этой службе LDAP через System.DirectoryServices.Protocols. Я думаю, что тот же запрос не работает:
Код: Выделить всё
var identifier = new LdapDirectoryIdentifier("", 389);
using var connection = new LdapConnection(identifier);
connection.AuthType = AuthType.Basic;
connection.Credential = new NetworkCredential("", "");
connection.Bind();
var request = new SearchRequest("", "(objectClass=*)", SearchScope.Subtree, null);
var response = (SearchResponse)connection.SendRequest(request);
ОШИБКА: Ошибка запроса Active Directory. Сервер LDAP недоступен
Почему ldapsearch работает успешно, а System.DirectoryServices.Protocols завершается сбоем на том же компьютере? Существуют ли различия в механизмах аутентификации (простое связывание и согласование/NTLM/Kerberos) или обработке TLS/StartTLS, погоне за ссылками или таймаутах?
Какая конфигурация требуется в C# для соответствия поведению ldapsearch?
Буду признателен за любую информацию о различиях между клиентами ldapsearch и .NET LDAP.
Я вроде как потерялся, так как для меня это в новинку, и я немного изучил документацию, но безуспешно.
Заранее спасибо