Невозможно проверить учетные данные, используя 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.