Почему C # DirectoryServices не работает с моим сервером LDAP? - PullRequest
0 голосов
/ 17 мая 2018

У меня работает сервер AD / LDAP, работающий нормально. Мне нужно что-то протестировать, поэтому я создал свой локально, используя phpldapadmin.

Когда я пытаюсь выполнить поиск по шаблону на objectClass, мой код выбрасывается. Это происходит только на моем локальном сервере.

System.DirectoryServices.DirectoryServicesCOMException: 'Указан неверный синтаксис dn.

Я пробовал несколько синтаксисов имен пользователей, которые поддерживает DirectoryServices: все они работают на рабочем сервере и не работают на моем локальном сервере. Я могу успешно войти внутрь и перемещаться по моему локальному серверу, используя JXplorer.

class Program
{
    static void Run(string ip, string username, string password)
    {
        var authType = System.DirectoryServices.AuthenticationTypes.None;
        var directoryEntry = new DirectoryEntry(ip, username, password, authType);
        var directorySearcher = new DirectorySearcher(directoryEntry, "(objectClass=*)");
        directorySearcher.SearchScope = SearchScope.OneLevel;

        // throws here
        var searchResult = directorySearcher.FindOne();

    }

    static void Main(string[] args)
    {
        Run("LDAP://validlocalip", "admin@test", "test");

        Console.ReadKey();
    }
}

1 Ответ

0 голосов
/ 17 мая 2018

Не нравится то, что вы передали в качестве параметра path конструктору DirectoryEntry:

var directoryEntry = new DirectoryEntry(ip, username, password, authType);

Этот параметр - путь LDAP, а не просто IP.Если все, что у вас есть, это IP, то вы можете попробовать «LDAP: // ip», но обычно вы используете свое доменное имя: «LDAP: //domain.com»

Более подробная информация здесь: https://docs.microsoft.com/en-ca/dotnet/api/system.directoryservices.directoryentry.path

...