|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Je travaille sur une application web pour laquelle il est nécessaire de s'identifier. Les utilisateurs sont tous enregistrés dans un annuaire LDAP. L'utilisateur doit donc donner son login et son mot de passe en clair, et je souhaite vérifier que le couple login/mdp existe bien dans l'annuaire. Comment faire, sachant que les mots de passe stockés dans LDAP sont cryptés ? Par exemple le mot de passe bidon00 est codé {CRYPT}VGE/fscsyryHw dans le champ userPassword. Voici la fonction concernée qui renvoie return array("2",false); car l'identification ne se fait pas. Si dans l'annuaire, je remplace {CRYPT}VGE/fscsyryHw par bidon00 tout marche bien, mais je veux garder les mots de passe cryptés dans l'annuaire LDAP. function passwd($uid,$password) { include("config/config.php.inc"); $ds=@ldap_connect($server); // Doit être un serveur LDAP valide ! ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $rdn="uid=".$uid.", ".$users_tree; if ($ds) { if (!ldap_bind($ds,$rdn,$password)) { return array("2",false); } else { return array("0",true); } } else { return array("1",false); } } Merci pour toute aide. Cordialement, -- Serge Nazarian Cliquez ci dessous pour une réponse personnelle : http://cerbermail.com/?CBBJUUv0pN |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Serge Nazarian a écrit :
> Voici la fonction concernée qui renvoie > return array("2",false); > function passwd($uid,$password) > { > include("config/config.php.inc"); un vrai attire-hacker, ce fichier inclus qui ne finit pas par .php... > $ds=@ldap_connect($server); // Doit être un serveur LDAP valide ! > ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); > $rdn="uid=".$uid.", ".$users_tree; > if ($ds) > { > if (!ldap_bind($ds,$rdn,$password)) > { > return array("2",false); > } ça serait pertinent de récupérer le contenu de ldap_error/ldap_errno pour vérifier ce qui fait tousser LDAP. Sinon, sur le fond de ton problème, la solution est simple : il faut et il suffit de crypter le mot de passe avant de l'envoyer au serveur LDAP. Mais, s'interroge le jeune Séraphin Nazarian, comment diantre crypter ce mot de passe ? Palsambleu, damoiselle Crypt est ton amie : $sel = 'VG'; $password_crypte = '{CRYPT}' . crypt($password, $sel); (sans aucune garantie vu que je connais que dalle en LDAP :-) -- P'tit Marcel |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Dans le message numéro 46ae1d9d$0$17833$426a74cc@news.free.fr,
P'tit Marcel <geononauxspams@centrale-lyon.org> a écrit : >> include("config/config.php.inc"); > un vrai attire-hacker, ce fichier inclus qui ne finit pas par .php... ok, je vais changer ça. >> $ds=@ldap_connect($server); // Doit être un serveur LDAP >> valide ! ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); >> $rdn="uid=".$uid.", ".$users_tree; >> if ($ds) >> { >> if (!ldap_bind($ds,$rdn,$password)) >> { >> return array("2",false); >> } > > > ça serait pertinent de récupérer le contenu de ldap_error/ldap_errno > pour vérifier ce qui fait tousser LDAP. > Il dit : Unable to bind to server: Invalid credentials in ... > Sinon, sur le fond de ton problème, la solution est simple : il faut > et il suffit de crypter le mot de passe avant de l'envoyer au serveur > LDAP. > Mais, s'interroge le jeune Séraphin Nazarian, comment diantre crypter > ce mot de passe ? > > Palsambleu, damoiselle Crypt est ton amie : > > $sel = 'VG'; > $password_crypte = '{CRYPT}' . crypt($password, $sel); > Cela ne fonctionne pas : même message Unable to bind to server: Invalid credentials in ... De plus , comment récupérer le grain de sel qui n'est pas le même pour chaque utilisateur ? J'ai bien une idée :Il faudrait interroger en "anonyme" sous réserve que l'utilisateur existe, récupérer le mot de passe crypté et extraire les deux premier caractères après {CRYPT} et utiliser la fonction crypt. Mais on serait ramené au problème précédent. -- Serge Nazarian Cliquez ci dessous pour une réponse personnelle : http://cerbermail.com/?CBBJUUv0pN |
|
![]() |
| Outils de la discussion | |
|
|