PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.php > ldap mot de passe cryptes.
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
ldap mot de passe cryptes.

Réponse
 
LinkBack Outils de la discussion
Vieux 30/07/2007, 14h29   #1
Serge Nazarian
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut ldap mot de passe cryptes.

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
  Réponse avec citation
Vieux 30/07/2007, 18h24   #2
P'tit Marcel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: ldap mot de passe cryptes.

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
  Réponse avec citation
Vieux 30/07/2007, 20h32   #3
Serge Nazarian
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: ldap mot de passe cryptes.

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
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 09h28.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11955 seconds with 11 queries