Voici un retour rapide sur un problème rencontré récemment, avec la connexion sécurisée à un annuaire LDAP avec PHP.
L’appel à ldap_connect s’effectue correctement mais l’authentification avec ldap_bind renvoie une erreur comme quoi la connexion n’est pas effectuée avec le serveur :
$ds = ldap_connect('ldaps://ldap.example.com'); if (!$ds) { die("Echec de la connexion à l'annuaire LDAP.") } ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $dn = "uid=mylogin, ou=myorgunit, o=mycompany, c=com"; $r = ldap_bind($ds, $dn, $valeur);
Un paramètre important à retenir est la validité du certificat SSL fourni par le serveur, qui lorsqu’il n’est pas valide, renvoie une erreur 81 (que vous pouvez détecter avec la fonction ldap_errno).
L’origine du problème est obscure et on doit la solution à un contributeur du site php.net. L’extension PHP fournie avec Windows possède en effet une directive qui va chercher un fichier de configuration d’OpenLDAP codé en dur dans l’extension (c:openldapsysconfldap.conf).
L’astuce pour ne pas obtenir d’erreur en cas de certificat invalide est de recréer ce fichier ldap.conf avec le chemin indiqué ci-dessus, et d’y ajouter la ligne :
TLS_REQCERT never
… et vous pourrez enfin vous authentifier sur le LDAP avec un certificat SSL non signé !
juin 11th, 2007 at 17:28
Niquel, mais tu veus pas changer ta police de caractères pour le code? Geshi le rend bien compréhensible mais la police est quasi illisible