Bonjours,
Avant de commencer. Je tiens à préciser que je suis sur le script depuis 1semaine. Que j'ai beaucoup utilisé Google et ce forum developpez.
J'ai amélioré mon script du mieux que j'ai pu le comprendre. J'ai utilisé les documents sur le PHP particulièrement le tout sur les fonctions LDAP_....
Mon objectif :
A partir d'un site interne,actuellement remplacé par un formulaire temporaire pour les essaies, j'ai besoin que les utilisateurs tapent leur login/Mot de passe. En validant, le script part vérifier que l'utilisateur existe sur mon LDAP. Si l'utilisateur existe et que ses identifiants correspondent avec le LDAP, alors il lancera la page adéquate.
Mon 2eme objectif :
J'y travaillerais une fois le premier réalisé.
Si les identifiants de l'utilisateur sont ok, j'aimerais qu'il me rajoute le user/mot de passe dans la base de donnée du site. En gros il importe les info du LDAP sur la Base de donnée une fois identifié.
(cet objectif n'est pas encore d'actualité)
Le formulaire et le script sont actuellement dans le même document *.php
J'ai tenté de me simplifier pour les tests.
Code du mon formulaire (aucun souci avec lui)
Code du script PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47<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()"> <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>
Le problème que j'ai dans tout ca se situe au niveau du ldap_bind
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 <?php if($saisieEffectuer) { // informations de connexions $ldaphost = "ldap://XXX.XXX.XXX.XXX"; //inserer ici l'addresse du serveur LDAP $ldapBaseDN = "SN=XXX-XXX-XX,SN=XX,SN=XXXX_XX,DC=XXXX-XXXX,DC=XXXX,DC=XXX"; $ldapport = 389; // Optional. // Eléments d'authentification LDAP $users = "uid=".$POST['login']; // DN ou RDN LDAP / Doute sur comment recuperer le login du formulaire html $passs = $_POST['pass']; // Mot de passe associé/ Doute sur comment recuperer le mot du formulaire html... // Pour le mot de passe en SSHA mt_srand((double)microtime()*1000000); $salt = pack("CCCC", mt_rand(), mt_rand(), mt_rand(), mt_rand()); $hash = "{SSHA}" . base64_encode(pack("H*", sha1($passs . $salt)) . $salt); // echo $hash . "\n"; // Connexion au serveur LDAP $ldapconn = ldap_connect($ldaphost, $ldapport) or die("Impossible de se connecter au serveur LDAP."); // Option du LDAP passer à la version 3 ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); $ldapsearch = ldap_search($ldapconn, $ldapBaseDN, $users) or exit(">>erreur lors de la recherche<<"); $result = ldap_get_entries($ldapconn,$ldapsearch); if ($result[0]) { $ldapbind = (ldap_bind($ldapconn, $result[0]['dn'], $hash)); //surement la provenance de mon problème... } if ( $ldapbind == FALSE ) // si le BIND est FALSE { echo " il est membre mais mauvais mdp"; } elseif ( $ldapbind == TRUE ) // Les futures traitement une fois le reste en fonctionnement; { echo " OK!!!!"; } else { echo "nom de user invalide"; // le user n'a pas pu être trouvé } } echo "Fermeture de la connexion"; ldap_close($ldapconn); ?>
Chose que je suis conscient de bloqué depuis belle lurette maintenant
J'utilise pour faire mes essaies, mon compte et passe perso. Qui sont des droits administrateur. Ca me permet de limiter les erreurs.
L'erreur qui ressort après validation c'est "il est membre mais mauvais mdp"
Au début je pensais que je récupérais mal mon login et pass du formulaire html. Après pas mal de recherche je n'ai plus trop cette impression. Si on peut me confirmer que c'est bien structuré. MErci
J'attends vos premiers retour. Et je vous donnerez d'autre information si j'ai oublié quelque chose.
Merci par avance.
Partager