Authentification ldap en php via login/passw

hismaella Messages postés 18 Date d'inscription   Statut Membre -  
 juninho269 -
bonjour à tous,

j'ai un probléme d'authentification ldap en php via login et password quelqu'un pourrait - il m'aider ? en faite je dois pouvoir me logger à un annuaire ldap en introduisant un login et un mot de pass merci de m'aider si vous pouvez
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. hismaella
     
    désolé pour la maniére d'envoyer le code je n'ai pas l'habitude j'essaye d'aranger cela voilà ma page toto.php
    <?php
    /* Fichier : LDAP.class.php */
    // Création de la classe
    class LDAP
    {
    	// Attribut du login du LDAP
    	var $LDAP_login;
    	// Attribut du password du LDAP
    	var $LDAP_password;
    	// Attribut de l'hôte du LDAP
    	var $LDAP_host;
    	// Attribut de connection
    	var $connect;
    	//Identification
    	var $identification;
    
    	// Définition du constructeur
    	function LDAP($login, $password, $host)
    	{
    		// Vérification des variables
    		if (empty ($login) || empty ($host) || empty ($password)){
    		// Affichage du message d'erreur
    		//echo "<b>Erreur :</b> Une ou plusieurs variable(s) n'ont pas été renseigné.<br>Procédure interrompu";
    		exit;
    		}
    		else {
    			// Initialisation des attributs
    			$this->LDAP_login = $login;
    			$this->LDAP_password = $password;
    			$this->LDAP_host = $host;
    		}
    	}
    	
    	//fonction de connection
    	function connect()
    	{
    		// Connection à LDAP
    		$this->connect = @ldap_connect($this->LDAP_host);
    		// Vérification de la connection
    		if (!$this->connect){
    			// Affichage du message d'erreur
    			//echo "<b>Erreur :</b> Connection au serveur impossible impossible<br>";
    			return false;
    		}else{
    			return true;
    		}
    		// Initialisation de l'attribut de connection
    	}
    	
    	// Méthode Identification()
    	function identification ()
    	{
    		// Exécution de l'identification
    		$ident = @ldap_bind($this->connect, $this->LDAP_login, $this->LDAP_password);
    		//Vérification de la connection
    		if ($ident) {
    			$this->identification = $ident;
    			return true;
    	    } else {
        	    //echo "Echec d'identification<br>";
    			return false;
    	    }
        }
    	
    	//fonction recherche
    	// Attention le serveur est configurer pourne pas tolerer plus de 200 réponses a la requete
    	// temps de recherche maximale 2 secondes
    	function recherche($Nom)
    	{
    		echo 'Recherchons (sn='.$Nom.') ...';
    		// Recherche par nom
    		$search = ldap_search($this->connect, 'o="à compléter", c=fr', "sn=$Nom");  		echo 'Le résultat de la recherche est ' . $search . '<br />';
    	
    		echo 'Le nombre d\'entrées retournées est ' . ldap_count_entries($this->connect,$search) . '<br />';
    
    		echo 'Lecture des entrées ...<br />';
    		$info = ldap_get_entries($this->connect, $search);
    		echo 'Données pour ' . $info["count"] . ' entrées:<br />';
    	
    		for ($i=0; $i<$info["count"]; $i++) {
    			echo 'dn est : ' . $info[$i]["dn"] . '<br />';
    			echo 'premiere entree cn : ' . $info[$i]["cn"][0] . '<br />';
    			echo 'premiere entree sn : ' . $info[$i]["sn"][0] . '<br />';
    			echo 'premier email : ' . $info[$i]["mail"][0] . '<br />';
    			echo 'premier givenName : ' . $info[$i]["givenName"][0] . '<br />';
    			echo 'premier uid : ' . $info[$i]["uid"][0] . '<br />';
    		}
    	}
    
    	// Méthode deconnect()
    	function deconnect (){
    		// Déconnection
    		$deconnect = ldap_unbind($this->connect);
    		if(!$deconnect)
    			ldap_close($this->connect);//c les bretelles et la ceinture :)
    	}//fin de déconnexion
    }//fin de class
    ?>
    
    7
  2. hismaella Messages postés 18 Date d'inscription   Statut Membre 2
     
    j'ai un probléme dauthentification ldap avec mon code et je ne vois pas ou vien l'erreur qq pourrait il m'aider car j'ai ma fenêtre d'authentification qui s'ouvre mais je dois cliquer 3 fois sur le boutton OK et ça ne m'affiche pas la page demandé si le login et le pass est bon voilà mon code:

    <?php
    $annu1 = "didie"; //Annuaire Principal il faut remplir avec le nom de ton serveur ou l'adresse ip si c'est pas défini
    include "./toto.php";
    header('WWW-Authenticate: Basic realm="LDAP"'); //fenetre de login ca sort tout seul une jolie fenetre

    /*j'ai oublié ca sans quoi ca ne te ramene pas les variables*/
    if(phpversion() < 4.2){
    foreach($HTTP_SERVER_VARS as $NomVar => $Value) $$NomVar = $Value;
    }else{
    foreach($_SERVER as $NomVar => $Value) $$NomVar = $Value;
    }

    session_start();
    //$identification = "0";

    if($PHP_AUTH_USER != '' && $PHP_AUTH_PW != ''){
    //---------------------------------------LDAP-------------------------------------------
    $serveur1 = new LDAP($PHP_AUTH_USER,$PHP_AUTH_PW,$annu1);
    if($serveur1->connect()){ //connexion au serveur LDAP
    if($serveur1->identification()){ //identification au serveur LDAP
    //------------------si identification ok
    header("location: ./inde.php"); //page suivante de ta page d'authentification
    /*le code doit etre situé en debut de page si tu utilise le header sinon ca va planter
    si tu ne veut pas utiliser le header il y a moyen en fait tu met ici tout le code a executer si l'authentification est bonne*/
    }else{
    //l'utilisateur n'a pas ete reconnu dans l'annuaire LDAP
    }
    $serveur1->deconnect(); //on se deconnect du serveur c'est plus propre quand meme
    }else{
    //connexion impossible
    }
    }else{
    //il faut remplir les champ
    }
    ?>

    et voilà ma page toto.php:

    <?php
    /* Fichier : LDAP.class.php */
    // Création de la classe
    class LDAP
    {
    // Attribut du login du LDAP
    var $LDAP_login;
    // Attribut du password du LDAP
    var $LDAP_password;
    // Attribut de l'hôte du LDAP
    var $LDAP_host;
    // Attribut de connection
    var $connect;
    //Identification
    var $identification;

    // Définition du constructeur
    function LDAP($login, $password, $host)
    {
    // Vérification des variables
    if (empty ($login) || empty ($host) || empty ($password)){
    // Affichage du message d'erreur
    //echo "<b>Erreur :</b> Une ou plusieurs variable(s) n'ont pas été renseigné.<br>Procédure interrompu";
    exit;
    }
    else {
    // Initialisation des attributs
    $this->LDAP_login = $login;
    $this->LDAP_password = $password;
    $this->LDAP_host = $host;
    }
    }

    //fonction de connection
    function connect()
    {
    // Connection à LDAP
    $this->connect = @ldap_connect($this->LDAP_host);
    // Vérification de la connection
    if (!$this->connect){
    // Affichage du message d'erreur
    //echo "<b>Erreur :</b> Connection au serveur impossible impossible<br>";
    return false;
    }else{
    return true;
    }
    // Initialisation de l'attribut de connection
    }

    // Méthode Identification()
    function identification ()
    {
    // Exécution de l'identification
    $ident = @ldap_bind($this->connect, $this->LDAP_login, $this->LDAP_password);
    //Vérification de la connection
    if ($ident) {
    $this->identification = $ident;
    return true;
    } else {
    //echo "Echec d'identification<br>";
    return false;
    }
    }

    //fonction recherche
    // Attention le serveur est configurer pourne pas tolerer plus de 200 réponses a la requete
    // temps de recherche maximale 2 secondes
    function recherche($Nom)
    {
    echo 'Recherchons (sn='.$Nom.') ...';
    // Recherche par nom
    $search = ldap_search($this->connect, 'o="à compléter", c=fr', "sn=$Nom"); echo 'Le résultat de la recherche est ' . $search . '<br />';

    echo 'Le nombre d\'entrées retournées est ' . ldap_count_entries($this->connect,$search) . '<br />';

    echo 'Lecture des entrées ...<br />';
    $info = ldap_get_entries($this->connect, $search);
    echo 'Données pour ' . $info["count"] . ' entrées:<br />';

    for ($i=0; $i<$info["count"]; $i++) {
    echo 'dn est : ' . $info[$i]["dn"] . '<br />';
    echo 'premiere entree cn : ' . $info[$i]["cn"][0] . '<br />';
    echo 'premiere entree sn : ' . $info[$i]["sn"][0] . '<br />';
    echo 'premier email : ' . $info[$i]["mail"][0] . '<br />';
    echo 'premier givenName : ' . $info[$i]["givenName"][0] . '<br />';
    echo 'premier uid : ' . $info[$i]["uid"][0] . '<br />';
    }
    }

    // Méthode deconnect()
    function deconnect (){
    // Déconnection
    $deconnect = ldap_unbind($this->connect);
    if(!$deconnect)
    ldap_close($this->connect);//c les bretelles et la ceinture
    }//fin de déconnexion
    }//fin de class
    ?>

    merci de m'aider si vous pouvez
    2
  3. juninho269
     
    Bonjour,
    Il ya a une petite erreur dans ta class. Tes données membres doivent être privées pour que seulement les méthodes de la classe y est accès.
    Donc :

    // Attribut du login du LDAP
    private $LDAP_login;
    // Attribut du password du LDAP
    private $LDAP_password;
    // Attribut de l'hôte du LDAP
    private $LDAP_host;
    // Attribut de connection
    private $connect;
    //Identification
    private $identification;
    2