Comment puis-je valider les droits d'accès Active Directory via LDAP + SSL?

Je suis en train d'utiliser l' .NET 3.5 System.DirectoryServices.AccountManagement espace de noms pour valider les informations d'identification d'utilisateur à l'encontre de notre Active Directory serveur LDAP sur un cryptage SSL connexion LDAP. Voici un exemple de code:

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

Ce code fonctionne très bien sur non garantis LDAP (port 389), mais je préfère ne pas transmettre un user/pass combinaison en texte clair. Mais lorsque je change de LDAP + SSL (port 636), j'obtiens l'exception suivante:

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)

Port 636 fonctionne pour d'autres activités, telles que la recherche de la non-information de mot de passe pour que LDAP/AD entrée...

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

...donc je sais que ce n'est pas mon LDAP SSL du serveur de configuration, car il fonctionne sur SSL pour d'autres recherches.

Quelqu'un a eu le ValidateCredentials(...) appel à travailler sur SSL? Pouvez-vous m'expliquer comment? Ou est-il un meilleur moyen de valider en toute sécurité AD/LDAP informations d'identification?

source d'informationauteur Nate Sauber