Невозможно проверить учетные данные, используя LDAP

Я новичок в LDAP и хотел подключиться к серверу LDAP, используя.Net для проверки учетных данных пользователя. Следующий код возвращает ошибку:

Сервер LDAP недоступен

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

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "LDAP://192.168.65.201:389/DC=be,DC=ndl,DC=CompanyName,DC=com"))
{
    bool a= pc.ValidateCredentials("myname@CompanyName.com","password"); 
}

1 ответ

Решение

Прежде всего - PrincipalContext работает только с Active Directory, а не с любым другим сервером LDAP.

Во-вторых: вы указываете недопустимые параметры для конструктора. Посмотрите документы MSDN о том, какие конструкторы доступны для PrincipalContext,

Вы можете определить только ContextType параметр, в этом случае PrincipalContext создан на основе текущего домена, к которому вы подключены:

var ctx = new PrincipalContext(ContextType.Domain);

Или вы можете использовать конструктор со вторым строковым параметром, который обозначает доменное имя вашего домена (только имя домена - НЕ полный путь LDAP!):

var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com");

Затем вы подключаетесь к этому конкретному домену на корневом уровне.

Или, в-третьих, вы можете указать третий параметр, который определяет контейнер в этом домене для подключения:

var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com", 
                               "CN=Users,DC=be,DC=ndl,DC=CompanyName,DC=com");

Поэтому вам нужно найти соответствующий конструктор и предоставить правильные параметры, чтобы заставить это работать - если вы используете Active Directory.

Другие вопросы по тегам