cs_leodc
Messages postés4Date d'inscriptionmardi 6 février 2007StatutMembreDernière intervention27 février 2008
-
26 févr. 2008 à 16:52
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
27 févr. 2008 à 14:19
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...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 févr. 2008 à 21:01
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
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 26 févr. 2008 à 21:36
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é).
à+
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 26 févr. 2008 à 21:36
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é).
à+
cs_leodc
Messages postés4Date d'inscriptionmardi 6 février 2007StatutMembreDernière intervention27 février 2008 26 févr. 2008 à 22:38
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 févr. 2008 à 23:38
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.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 27 févr. 2008 à 00:21
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 ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 27 févr. 2008 à 00:45
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.
cs_leodc
Messages postés4Date d'inscriptionmardi 6 février 2007StatutMembreDernière intervention27 février 2008 27 févr. 2008 à 08:33
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?