Php ldap et sécurité

Signaler
Messages postés
4
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
27 février 2008
-
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
-
Bonjour à tous,

Voilà je suis sur un gros problème depuis deux jours, je travail sur une authentification LDAP (Active Directory serveur 2003) avec le langage PHP.

J'ai bien réussi pour l'instant à m'identifier auprès du serveur en utilisant la méthode ldap_bind avec le nom d'utilisateur et le mot de passe.

Le problème est le suivant, le mot de passe de l'utilisateur passe à la page d'authentification par post et en clair...

Je me suis alors dis qu'il fallait passé par une fonction de hachage mais comment faire alors pour vérifier le couple Login/mot de passe sur LDAP quand le mot de passe est haché?

Sachant que je n'arrive pas à récupérer le mot de passe d'un utilisateur (même en haché, l'attribut userPassword étant vide) alors je me demande si il n'y a pas une configuration à faire au niveau de Active Directory pour pouvoir récupérer le mot de passe crypté?

Autre chose, j'utilise LDAP Browser pour lire les données de mon serveur mais je ne peux pas me connecter en anonyme -> Operations error... (je suis donc obligé d'utiliser un utilisateur et mot de passe)

Voilà j'espère que quelqu'un aura une réponse à m'apporter parce que là je galère et pour l'instant je n'ai trouvé que des personnes qui passent aussi le mot de passe en POST...

Leo

11 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

un hashage est irréversible. C'est le propre d'un hash. Ce dont tu as besoin, c'est d'un cryptage, ce qui est très différent.
Avoir accès au mot de passe de l'active directory ne te servirait à rien de toute manière puisqu'il est crypté.
Quand tu passes par du web pour faire transiter des données critiques...forcément, tu ne vas pas utiliser du POST ou du GET de base pour les faire transiter, à moins d'être en https.
Donc, crypte.
Tu peux aussi passer par une identification httprealm.
http://www.php.net/manual/fr/features.http-auth.php
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello, tu peux aussi hasher le mot de passe avant de l'envoyer por POST et le comparer avec le mot de passe de ta base, qui lui aussi aura été hashé ou que tu hasheras à ce moment là pour faire la comparaison (mais autant le stocker hashé).
à+
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello, tu peux aussi hasher le mot de passe avant de l'envoyer por POST et le comparer avec le mot de passe de ta base, qui lui aussi aura été hashé ou que tu hasheras à ce moment là pour faire la comparaison (mais autant le stocker hashé).
à+
Messages postés
4
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
27 février 2008

SAlut et merci pour vos réponse.

Cependant je ne souhaite pas décrypter le mot de passe stocké dans LDAP mais effectivement comme le dit evangun je souhaite crypter le mot de passe entré pas l'utilisateur et le comparer avec celui stocké dans LDAP, ainsi aucun mot de passe ne serait posté en clair.

Le soucis c'est que justement je n'arrive pas à récupérer le mot de passe crypté dans l'annuaire...

Leo
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Le problème Evangun c'est que ce n'est pas une bdd, c'est AD (active directory).
Je maintiens qu'il faut crypter, evoyer, décrypter et faire un bind avec le mot de passe décrypter. Ca me parait le plus simple.
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Au temps pour moi ! je n'ai jamais utilisé LDAP.
Néanmoins je ne suis pas sûr que le cryptage en javascript soit très sécurisé, connaître la fonction de cryptage (interceptable j'imagine, si les données POST le sont aussi) permet de retrouver le mot de passe, non ?
J'en déduis que pour avoir plus de sécurité, soit on a les mots de passe des utilisateurs à l'avance et on les stocke en clair (apparement il faut bien, si AD les a en clair) mais l'utilisateur l'envoie hashé, soit (et/ou) on se tourne vers des protocoles sécurisés. Qu'en pensez-vous ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Non ils sont cryptés dans ldap.
Oui sinon :-)
Une page sécurisée est le mieux de toute manière. Et globalement...on n'utilise pas l'identification au ldap pour un applicatif extranet...intranet oui, tant que ça reste sur le réseau. Mais si on doit passer par internet...bof.
Messages postés
4
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
27 février 2008

C'est en effet pour un portail intranet mais qui pourra être accessible par le net...

Bon ben si on ne peut vraiment pas passer par un POST avec mot de passe crypter (crypt correspondant à celui de LDAP) je vais devoir me débrouiller avec l'authentification HTTP... mais je ne l'ai jamais utilisé alors est-ce suffisement sécurisé? Personne de l'extèrieur ne pourra obtenir le mot de passe?

Leo
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Ce n'est pas l'authentification http qui est sécurisée, c'est le shttp (certificat SSL).
Messages postés
4
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
27 février 2008

Ouais je suis d'accord mais pour utiliser le SSL il faut des certificats valides sinon sa n'est pas vraiment sécurisé...

M'enfin merci encore pour vos réponses...

Leo
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Et oui, la sécurité, ça se monnaye :p ^^