J'essaie de configurer openldap 2.4.33 (compilé à partir des sources sur OS X 10.8) pour supporter l'authentification digest-md5, et je n'y parviens pas. Je ne parviens pas à m'authentifier, j'obtiens l'erreur suivante no secret in database
et je n'arrive pas à comprendre pourquoi.
La configuration jusqu'à présent...
J'ai un utilisateur spécifié comme suit :
dn: cn=eb01,ou=bennet,o=meryton
objectclass: Person
objectclass: inetOrgPerson
cn: eb01
givenname: Elizabeth
sn: Bennet
userPassword: pw1
# or try...
#userPassword:: cHcx
#userPassword: {CLEARTEXT}pw1
(et il n'y a pas d'espace à la fin, j'ai vérifié !) J'ai configuré les entrées olcAuthzRegexp appropriées pour le cn=config, afin de faire correspondre les identités d'authentification au bon dn :
olcAuthzRegexp: uid=([^,]*),cn=digest-md5,cn=auth
ldap:///o=meryton??sub?(cn=$1)
Cependant, lorsque j'effectue une recherche, je ne parviens pas à m'authentifier :
% ldapsearch -H ldap://localhost:8389 -LLL -b o=meryton \
-Y DIGEST-MD5 -X u:eb01 -w pw1
SASL/DIGEST-MD5 authentication started
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: SASL(-13): user not found: no secret in database
%
Les messages de débogage du serveur suggèrent que j'ai effectué le mappage correctement :
5120be85 <==slap_sasl2dn: Converted SASL name to cn=eb01,ou=bennet,o=meryton
5120be85 slap_sasl_getdn: dn:id converted to cn=eb01,ou=bennet,o=meryton
5120be85 SASL Canonicalize [conn=1000]: slapAuthzDN="cn=eb01,ou=bennet,o=meryton"
5120be85 SASL [conn=1000] Failure: no secret in database
5120be85 send_ldap_result: conn=1000 op=1 p=3
5120be85 send_ldap_result: err=49 matched="" text="SASL(-13): user not found: no secret in database"
Cependant, bien que ce bavardage comprenne des registres de demandes d'accès, il n'en demeure pas moins qu'il n'est pas possible de le faire :
5120be85 => access_allowed: auth access to "cn=eb01,ou=bennet,o=meryton" "cn" requested
le bavardage fait pas inclure tout journal des demandes d'accès au userPassword
attribut.
C'est-à-dire qu'il apparaît comme si le serveur, dans cette configuration, ne savait pas que les userPassword
est le secret sur lequel il doit effectuer l'authentification digest-md5. Je ne l'ai pas configuré, mais (a) j'ai l'impression que c'est le secret par défaut, (b) je ne trouve rien dans les pages de manuel ou dans le manuel d'openldap qui semble indiquer comment le configurer, et (c) je ne trouve rien dans les divers conseils en ligne qui suggère même que c'est nécessaire.
L'authentification simple est suffisante.
Il s'agit d'une configuration un peu étrange - des mots de passe en clair et pas de base de données SASL, car il s'agit d'une configuration LDAP factice/légère pour effectuer des tests de régression - mais je n'ai plus aucune idée de ce qu'il faut lire ensuite, ni de mots-clés ou de fragments de fichiers journaux à rechercher sur Google. Personne sur la planète entière ne semble avoir eu ce problème précis (ce n'est pas que exotique), donc je soupçonne que j'ai brisé cela d'une manière ou d'une autre avec une autre partie de la configuration. Mais je crois que je comprends ce que font tous les autres éléments de la configuration, et ... il n'y a rien d'évident.
J'ai la désagréable impression qu'il va y avoir une solution très simple, mais pour l'instant, je suis ouvert à toutes les idées.