Bonjour à tous,
Je viens cous solliciter pour coup de main, je développe en ce moment une application ayant besoin de se connecter en SSL à un LDAP.
J'arrive sans problème a communiquer avec un LDAP sans la couche SSL, ayant bien cherché sur notre ami Google, j'ai pu comprendre que la classe Directory ne gère pas l'acquittement auto du certificat envoyé par le serveur est qu'il fallait passer par System.DirectoryServices.Protocols;
je vous met le code de ce qu'il marche sans SSL:
Voila mon code en SSL et j'ai toujours un message d'erreur me disant : Le serveur ne peut pas gérer les demandes liées à l'annuaire sur 'System.DirectoryServices.Protocols.DirectoryOperationException' Alors que je suis sur que le serveur fonctionne car je l'utilise avec Outlook
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public void getCertInLDAP() { DirectoryEntry de = new DirectoryEntry("LDAP://totototototo/o=toto,c=to", "", "",AuthenticationTypes.Anonymous); DirectorySearcher dsearch = new DirectorySearcher(de); dsearch.Filter = "(&(objectclass=*)(userCertificate;binary=*))"; SearchResultCollection rc = dsearch.FindAll(); X509Certificate stt = new X509Certificate(); foreach (SearchResult r in rc) { if (r.Properties.Contains("usercertificate;binary")) { MessageBox.Show("Pafffffffffff"); byte[] buffer = new byte[0]; if (r.Properties.Contains("userCertificate") && (r.Properties["userCertificate"] != null)) { buffer = r.Properties["userCertificate"].Cast<byte[]>().First<byte[]>(); X509Certificate2 certificate = new X509Certificate2(buffer); MessageBox.Show(certificate.Subject.ToString()); } } } }
Methode pour le TrustSigned:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 LdapConnection con = new LdapConnection(new LdapDirectoryIdentifier("######",636)); con.SessionOptions.SecureSocketLayer = true; con.SessionOptions.ProtocolVersion = 3; con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallBack); con.Credential = new NetworkCredential("cn=#####,ou=securite,dc=#####,dc=fr", ""); con.AuthType = AuthType.Basic; con.Timeout = new TimeSpan(1, 0, 0); con.Bind();
Donc au moment on Bind la connexion j'ai ce message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public static bool ServerCallBack(LdapConnection connection, X509Certificate certificate) { return true; }
Est ce que quelqu'un peu m'aider svp je craque.....
Partager