connexion site intranet via AD/LDAP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : connexion site intranet via AD/LDAP

connexion site intranet via AD/LDAP

par nolookpass8 » 20 juin 2012, 16:45

Salut !

Je me suis inspiré de 2 bouts de code puis j'ai adapté à mon cas :

<?php
$user = htmlentities($_POST["user"]); // Récupération de la variable user
$pass = htmlentities($_POST["pass"]); // Récupération de la variable pass
$ds = ldap_connect("adresseIP du serveur ldap");  // On initialise la connexion au domaine (doit être un serveur LDAP valide !)
$r = ldap_bind($ds,"[email protected]","$pass") or die("Connexion impossible"); // Connexion avec user et pass
echo "Le résultat de connexion est  $ds "; // On affiche le résultat de la connexion LDAP
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); //Option à ajoutée si vous utiliser Windows server2k3
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); //Option à ajoutée si vous utiliser Windows server2k3

et :

<?php
// informations de connexions, ici user -->> login et pass -->> mot de passe

$ldap_host = "ipserveur ldap";  // l'adresse du serveur LDAP 
$base_dn = "DC=T***,DC=B**";  // nom du domaine 

$user = "cn=".$_POST['user'];  //  on traite les information recoltées via le formulaire de la page index.php : user et pass
$password = $_POST['pass']; 

$admin="admin";  // le groupe auquel appartient les admin et les membres
$membres="membres";  

$connect = ldap_connect($ldap_host)  // connexion en anonymous
    or exit(">>Connexion au serveur LDAP echoué<<");
		 
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);  // on passe le LDAP en version 3, necessaire pour travailler avec le AD
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
	 
$read = ldap_search($connect,$base_dn,$user) // recherche sur le serveur ldap avec paramètres : ad du serveur, domaine et user
     or exit(">>erreur lors de la recherche<<");
$info = ldap_get_entries($connect, $read); // ldap_get_entries : lit toutes les entrées du résultat

if ( preg_match("!".$admin."!",$info[0]["dn"] ) ){ // si le user trouvé est 1 admin :
	$bind = ldap_bind($connect,$info[0]["dn"],$password); // ldap_bind : authentification au serveur LDAP
	if ( $bind == FALSE ){	// si le BIND est FALSE 
		echo 'il est admin mais faux mdp'; // le mot de passe est erronée
		header("location: index.php"); // redirection vers index.php
        }
	elseif ( $bind == TRUE )   // si BIND est TRUE : on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
        {   
            echo 'connexion réussie groupe admin';
            header("location: saisirAppel.php"); // redirection vers saisirAppel.php
	}
}
elseif ( preg_match("!".$membres."!",$info[0]["dn"]) ) // si le user trouvé est 1 membre :
{
    $bind = ldap_bind($connect,$info[0]["dn"],$password); // authentification au serveur LDAP
	if ( $bind == FALSE ){  // si le BIND est FALSE
            echo 'il est membre mais faux mdp'; //le mot de passe est erronée
            header("location: index.php"); // redirection
        }
	elseif ( $bind == TRUE )  // on peut ajouter d'autre traitement si l'identification est ok ( ex : $_SESSION['user'] = ... )
        {   
            echo 'connexion réussie groupe membres';
            header("location: saisirAppel.php"); // redirection vers saisirAppel.php
        }
}
else // le user n'a pas pu être trouvé
{
    echo 'nom de user invalide'; // afficher user invalide
    header("location: index.php"); // redirection
}
ldap_close($connect); // déconnexion du serveur ldap

et aucun des 2 ne marchent ...

Ma page où il y a le form :

<form action="./connexion/connexionAD.php" method="post">
                <label for="user">Login* </label><input type="text" name="user" placeholder="Login"/><br />
                <label for="pass">Mot de passe* </label><input type="password" name="pass" placeholder="Mot de passe"/><br /><br />
                <input type="submit" class="myButtonSubmit" value="Se connecter" />
</form>

Une idée du problème ?