Как проверить достоверность кредитов Active Directory через LDAP + SSL?

Я пытаюсь использовать .NET 3.5System.DirectoryServices.AccountManagement пространство имен для проверки учетных данных пользователя на нашем LDAP-сервере Active Directoryover an SSL encrypted LDAP connection, Вот пример кода:

using (var pc = new PrincipalContext(ContextType.Domain, "sd.example.com:389", "DC=sd,DC=example,DC=com", ContextOptions.Negotiate))
{
    return pc.ValidateCredentials(_username, _password);
}

Этот код отлично работает с незащищенным LDAP (порт 389), однако я не буду передавать комбинацию пользователь / пароль в виде открытого текста. Но когда я перехожу на LDAP + SSL (порт 636), я получаю следующее исключение:

System.DirectoryServices.Protocols.DirectoryOperationException: The server cannot handle directory requests.
  at System.DirectoryServices.Protocols.ErrorChecking.CheckAndSetLdapError(Int32 error)
  at System.DirectoryServices.Protocols.LdapSessionOptions.FastConcurrentBind()
  at System.DirectoryServices.AccountManagement.CredentialValidator.BindLdap(NetworkCredential creds, ContextOptions contextOptions)
  at System.DirectoryServices.AccountManagement.CredentialValidator.Validate(String userName, String password)
  at System.DirectoryServices.AccountManagement.PrincipalContext.ValidateCredentials(String userName, String password)
  at (my code)

Порт 636 работает для других операций, таких как поиск информации, не связанной с паролем, для этой записи LDAP / AD ...

UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, _username)

... так что я знаю, что это не настройка SSL моего сервера LDAP, так как он работает через SSL для других поисков.

Кто-нибудь получилValidateCredentials(...) призывать работать по SSL? Можете ли вы объяснить, как? Или есть другой / лучший способ безопасной проверки учетных данных AD / LDAP?

Ответы на вопрос(4)

Ваш ответ на вопрос