begin process at 2012 05 30 19:10:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Identification LDAP dans script PHP avec password


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Identification LDAP dans script PHP avec password

vendredi 14 août 2009 à 02:20:55 | Identification LDAP dans script PHP avec password

silennnce

Bonjours à tous.
Pour commencer je vais exposé mon script

Ce script est un simple formulaire HTMl pour récupérer un login et un mot de passe

Code HTML :
<html>

<head>
<title>Authentification</title>
</head>
<body>
<br>
<script language="Javascript">
function verifierSaisie() {
if(document.authentification.login.value=="") {
alert("Login non saisi.");
}
else {
if(document.authentification.pass.value=="") {
alert("Pass non saisi");
}
else {
document.authentification.cours.value="en cours...";
document.authentification.submit();
}
}
}
</script>
<div align="center">
<form name="authentification" action="<?php $PHP_SELF ?>" method="post">
<table width="90%" border="0" cellspacing="0" >
<tr>
<td colspan="2" align="center"><b><font size="+1">Authentification</font></b></td>
</tr>
<tr>
<td>Login :</td>
<td><input style="border-style:solid" type="text" name="login" size="16" maxlength="30"></td>
</tr>
<tr>
<td>Pass :</td>
<td><input style="border-style:solid" type="password" name="pass" size="16" maxlength="30"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="hidden" value="true" name="saisieEffectuer">
<input type="button" value="Annuler" onclick="window.close()">&nbsp;
<input type="button" OnClick="verifierSaisie()" value="Ok"></td>
</tr>
</table>
<input type='text' style='border:none; ' name='cours' value='' size=11 >
</form>
</div>
</body>
</html>


Ce script(le principal) est celui qui permet de se connecter à un LDAP. Mais j'ai des problèmes.
Code PHP :
<?php

if($saisieEffectuer) {

// informations de connexions

$ldaphost = "ldap://XXX.XXX.XXX.XX"; //inserer ici l'addresse du serveur LDAP
$ldapBaseDN = "SN=XXXX,SN=XX,SN=XXXX,DC=XXXX,DC=XXX,DC=XX";
$ldapport = 389; // Optional.

// informations users tirées du formulaire HTML
$users = $_POST['login'];
$passs = $_POST['pass'];

// Conversion du mot de pass en SSHA
mt_srand((double)microtime()*1000000);
$salt = pack("CCCCCCCC", mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand());
$userPass = "{SSHA}" . base64_encode(pack("H*", sha1($passs . $salt)) . $salt);
echo $userPass . "\n";


echo "<h3>Recherche dans LDAP</h3>";

// Connexion au ldap
$ldapconn = ldap_connect ($ldaphost);

// Si connexion fonctionne
if ($ldapconn)
{

//Passage en version 3 du ldap
ldap_set_option ($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

// Connexion anonyme
$ldapbind = ldap_bind ($ldapconn);

// J'aimerais remplacer une connexion anonyme par une connexion identifié. NE FONCTIONNE PAS :(
// $ldapbind = ldap_bind ($ldapconn, $users, $hash);

// Fonction de recherche users et mot de passe si existant
$sr = ldap_search ($ldapconn,$ldapBaseDN , "uid=".$users);
$sr2 = ldap_search ($ldapconn,$ldapBaseDN , "userPassword=".$passs);
$info = ldap_get_entries ($ldapconn, $sr);
$info2 = ldap_get_entries ($ldapconn, $sr2);

echo "Nombre de personnes trouvées : ".$info ["count"]."<p>";
echo "Mot de passe trouvé : ".$info2 ["count"]."<p>";

// Affiche les informations trouvées
for ($i=0; $i < $info ["count"]; $i++)
{
echo "dn : ". $info[$i]["dn"] ."<br>";
echo "cn : ". $info[$i]["cn"][0] ."<br>";
echo "sn : ". $info[$i]["sn"][0] ."<p>";
}

// Affiche si le mot de passe est bon...
for ($i=0; $i < $info2 ["count"]; $i++)
{
echo "dn : ". $info2[$i]["dn"] ."<br>";
echo "cn : ". $info2[$i]["cn"][0] ."<br>";
echo "sn : ". $info2[$i]["sn"][0] ."<p>";
}

}

echo "Fermeture de la connexion";
ldap_close($ldapconn);
}
?>


Ceci est le message que j'ai en retour.
Code :
{SSHA}DYXXXX.......


Recherche dans LDAP

Nombre de personnes trouv&#233;es : 1

Mot de passe trouv&#233; : 0

dn : uidNumber=XXXXX,sn=XXX,sn=XX,sn=XX,dc=XXX,dc=XXX,dc=XX
cn : XXXX YYY
sn : XXXX

Fermeture de la connexion


Maintenant ma/mes questions.
Je cherche donc à me connecter à un LDAP. En anonyme ca marche très bien. Mais dès que je tente avec un mot de passe crypté en SSHA, la ca ne marche plus. Problématique. J'en ai besoin. Suite à une identification réussit, je lancerais différentes démarches qui ne sont pas encore implantés. Chaque chose en son temps.

Après pas mal de recherches, mon problème viens du Mot de passe. Que je n'arrive hélas pas à résoudre. Je fais donc appel à vos connaissances, dans l'espoir d'obtenir une aide suffisante pour résoudre ce souci très pénible pour moi.

Pour information, j'ai lu pas mal de documentation, c'est d'ailleurs grâce à ca que j'ai pu pondre ce script. J'ai utilisé divers forums. Et même celui la. J'ai vu un poste similaire, mais pas de solution. C'est une sorte de relance. Apparemment je ne suis pas le seul à ne pas comprendre ce genre de problème.

Cordialement dans l'espoir qu'on trouve une solution.

Merci :)

lundi 17 août 2009 à 22:50:00 | Re : Identification LDAP dans script PHP avec password

silennnce

Petit up et petite précision si ca peut aider.

Mon site est hébergé sur un Fedora 8....

mercredi 19 août 2009 à 10:15:57 | Re : Identification LDAP dans script PHP avec password

MasterCent

Salut Silennnce,

Je bosse depuis hier sur le même problème,
A savoir, utiliser LDAP pour authentifier une personne.

Quelle est la stratégie que tu défends : un connexion avec le mot de passe ou un search sur une connexion anonyme ? Perso, je cherche du côté de la connexion authentifiée.

@+

MC


mercredi 19 août 2009 à 10:30:31 | Re : Identification LDAP dans script PHP avec password

MasterCent


J'ai réussi une authentification :

J'ai d'abord fait une connexion anonyme, afin de connaitre le VRAI dn de mon ldap, avec une recherche sur la personne qui veut s'authentifier ( un peu comme ton code)

j'ai ensuite demandé la valeur du [dn] => uid=XXX,ou=Users,dc=XXX,dc=be

J'ai donc fait écrit la ligne de code
$dn = "uid=XXX,ou=Users,dc=XXX,dc=be"
puis tenté un
ldap_bind ( $conn , $dn , $pass ) ; // et c'est passé.

Reste à étudier le cryptage du mot.

bat

mc

mercredi 19 août 2009 à 11:31:44 | Re : Identification LDAP dans script PHP avec password

silennnce

Salut master cent.

Je travail sur une connexion authentifiée aussi.Pour mes tests j'utilise un compte compte perso qui à les accès admin.

Aujourd'hui je suis repartis sur des test avec une connexion anonyme. Pour l'instant mes résultats sont les mêmes :)

De ce que je crois comprendre dans ce que tu fais, et qui marcherait. Tu fais 2 ldap_bind? 1 premier pour récupérer les informations dn de l'utilisateur qui veut se connecter. Et un 2eme mais non anonyme avec le dn trouvé. ET ca ca marcherais chez toi?
Hum je testerais ca demain au boulot pour voir ce que ca donne chez moi. Mais j'avoue que je n'avais pas pensé à cette idée.
Pour ce qui est du mot de passe, normalement le code est bon... mais j'en saurais plus quand j'arriverais à cette étape.

Sinon aujourd'hui je me suis penché sur la fonction ldap_compare. Qui de ce que j'ai pu lire, serait une bonne fonction pour comparer des valeurs à celle du ldap. Je pense qu'elle devrait être présente pour le mot de passe par exemple...Mais pour faire des tests, on peut comparer le login... Qui lui n'est pas crypté.Et possible qu'avec cette fonction, 1 seul ldap_bind suffirait...

En tout cas merci d'être venu répondre sur le poste. Je me sens beaucoup moins seul :) Je donne des news demain (soir pour vous ^^)

PS: Je vie avec 9h de décalage horaire. Actuellement j'ai finis la mienne :) D'où le fait que je pourrais tester que demain...

mercredi 19 août 2009 à 11:33:55 | Re : Identification LDAP dans script PHP avec password

silennnce

Ça me parait évident maintenant, mais j'avais vraiment pas pensé à utiliser le résultat du dn recherché qui peut être plus juste que celui rentré manuellement... Impatient de vérifier ca.



Cette discussion est classée dans : mot, passe, ldap, sn, ldapconn


Répondre à ce message

Sujets en rapport avec ce message

LDAP : Authentification avec mot de passe crypté [ par Startrik ] Bonjour, Voila je fais une application php qui permettra d'authentifier un utilisateur en se servant de son login et mot de passe qui sont dans une an php ldap et sécurité [ par leodc ] 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 vérifier si un pseudo et un mot de passe sont disponible [ par nicomilville ] Salut, je voudrai faire une vérification avant d'envoyer le résultat d'un formulaire d'inscription a la base de donnée : je voudrai vérifier si le mot gestion de fichier [ par razguani ] salut j'ai fait une index qui demande à un utulisateur de saisir un login et un mot de passe et j'ai creé un fichier qui contient la valeur de login e Mot de passe sur un site [ par Michelflashgordon ] Bonjour à tous !!Voila mon problème,Je veux créer un espace sur le net qui me permettra de partager mes fichiers avec un ami.Il faudra entrer son nom Mot de Passe [ par victor99 ] Bonjour à tous je suis Victor, amateur en programation.   Je suis déjà en train de me faire un petit site pour le plaisir, et j'effectue quelques test Retrouver mot de passe hasher en sha1 [ par ookami25 ] Bonjour,je suis nouveau sur le forum,et je ne pose habituellement pas de question.Cependant ça fait bien une demi journée que j'essaye de trouver une Problème de lien $_SESSION et $_GET... [ par BooletMan ] Je suis sur le point de m'arracher les cheveux, tout débutant que je suis en PHP, sur un problème qui s'avèrera surement idiot... mais voilà: je suis SESSION : protection de page [ par jreaux62 ] Bonjour,J'ai fait des pages (pour un espace d'administration en ligne) avec protection par cookie.Mais apparemment, on m'a fait comprendre qu'au lieu conexion login et mot de passe [ par stanly145 ] <td class="" style="BORDER-RIGHT: black 1px solid; VERTICAL-ALIGN: top; WIDTH: 120px; PADDING-TOP: 10px; TEXT-ALIGN: cen


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,685 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales