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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
P'tit Marcel
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 ?
(sans aucune garantie vu que je connais que dalle en LDAP :-)
-- P'tit Marcel
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 ?
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 ?
(sans aucune garantie vu que je connais que dalle en LDAP :-)
-- P'tit Marcel
Serge Nazarian
Dans le message numéro 46ae1d9d$0$17833$,
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 ?
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
Dans le message numéro 46ae1d9d$0$17833$426a74cc@news.free.fr,
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 ?
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
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 ?
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