OVH Cloud OVH Cloud

ldap_compare

1 réponse
Avatar
Serge Nazarian
Bonjour,

Dans mon annuaire ldap les mots de passe des utilisateurs sont cryptés et
les mots de passe en clair me sont inconnus et d'ailleurs tout utilisateur
peut changer le sien à sa guise. Je veux aussi que les utilisateurs
s'identifient pour accéder à certaines pages.
J'ai donc fait la fonction suivante ... qui ne marche pas !
Je lis aussi dans la doc que ldap_compare ne peut comparer des valeurs
binaires. Est-ce la raison qui fait que ma fonction ne marche pas ? Si oui,
comment procéder ?

function verif_password($uid,$password) {
$serveur="192.168.1.10"; // Doit être un serveur LDAP valide !
$port=389;
$ds=ldap_connect($serveur,$port);
$dn="uid=".$uid.",ou=Users,dc=***,dc=***,dc=***";
$attr = "userPassword";
if ($ds) {
ldap_set_option ($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
if (ldap_bind($ds,"cn=administrateur,dc=***,dc=***,dc=***,"mdp
administrateur")) {
//il faut s'identifier en administrateur sinon ldap_compare n'est pas
accessible
$r=ldap_compare($ds,$dn,$attr,$password);
if ($r==-1) {
echo "Erreur : ".ldap_error($ds);
$rep = false;
}
else {
$rep = $r;
}
}
else {
echo "Impossible de se connecter en administrateur à l'annuaire
LDAP.";
$rep = false;
}
ldap_close($ds);
}
else {
echo "Impossible de se connecter au serveur LDAP.";
$rep = false;
}
return $rep;
}

Merci pour toute aide.
Cordialement,
--
Serge Nazarian

Cliquez ci dessous pour une réponse personnelle :
http://cerbermail.com/?CBBJUUv0pN

1 réponse

Avatar
Patrick Mevzek
Dans mon annuaire ldap les mots de passe des utilisateurs sont cryptés et
les mots de passe en clair me sont inconnus et d'ailleurs tout utilisateur
peut changer le sien à sa guise. Je veux aussi que les utilisateurs
s'identifient pour accéder à certaines pages.


Si ce n'est que ca, par exemple pour Apache, il y a déjà un module tout
fait qui permet de faire de l'authentification en se basant sur le
contenu d'un annuaire LDAP, donc inutile de développer du code.

Sinon, sur votre code, la bonne façon de faire dans ce cas de figure,
c'est d'essayer de se connecter au serveur LDAP avec le nom et mot de
passe fourni par l'utilisateur, et si la connexion échoue c'est que le
mot de passe devait être faux. Ainsi, pas besoin d'un compte
administrateur spécifique, et pas besoin de mettre un mot de passe d'un
compte privilégie dans votre programme.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>