0

Я пытаюсь выполнить аутентификацию пользователя с помощью LDAP, используя приведенный ниже код.PrincipalContext ValidateCredentials вызывает ошибки

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, ldap, "username", "password")) 
{ 
    bool success = context.ValidateCredentials(useralias, password); 
} 

Когда я использую LDAP в качестве "LDAP: // zyorg: 389/Я получаю, как ошибка говоря "". При инициализации PrincipalContext

Если я использую LDAP, как" Не удается связаться с сервером zyorg : 389/«Успешно это происходит, если я использую правильные учетные данные, но я вижу два исключения в« IntelliTrace », говорящие:« Сервер LDAP недоступен », когда выполняется ValidateCredentails. Если я поставлю неверные учетные данные для этого метод, если получить ложь, но все же получить те же исключения, записанные в «IntelliTrace».

Любые указатели для решения проблемы или отладки на то, что происходит на высоко оценены.

+0

Может помочь http://stackoverflow.com/questions/11561689/using-c-sharp-to-authenticate-user-against-ldap – Nalaka

+0

Работает ли ваш код на одном сервере? Если вы не выполняете аутентификацию по незащищенному порту. Если вы не установили 'SSL', сделайте это, иначе, если вы это сделаете, вам нужно переключить порт на' 636'. – smr5

+0

Мне любопытно, если вы когда-нибудь нашли причину этой ошибки. В настоящее время я испытываю ту же проблему, в которой 'ValidateCredentials' будет работать (возвращает true или false правильно), но я получаю, что сервер LDAP является недоступным исключением, которое поймано и выбрано внутри вызова. –

ответ

0

Если вы хотите проверить подлинность, вы можете использовать следующие шаги, используя PrincipalContext:

using(var context = new PrincipalContext(ContextType.Domain, "mydomain", "mydomain\serviceAcct", "serviceAcctPass")) 
{ 
    //Username and password for authentication. 
    return context.ValidateCredentials(username, password);  
} 

«serviceAcct» = счет в пределах пользователей домена, который имеет разрешение на просмотр директорий. "serviceAcctPass" = пароль для этой учетной записи службы. Как я уже сказал, для тестирования вы можете попробовать свой собственный контекст пользователя/пароля.

Кроме того, убедитесь, что предоставленное имя пользователя имеет либо форматирование домена «имя пользователя», либо «имя пользователя @ домена».

+0

Спасибо. Учетная запись, которую я использую, имеет разрешение на поиск каталога. Результат такой же, если я пользовательский домен \ учетная запись или просто учетная запись. ValidateCredentails возвращает правильное значение на основе предоставленных учетных данных, но оно выдает ошибки, которые записываются только в IntelliTrace. Если я запускаю вне отладки, ошибок нет. – user3731783