IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[LDAP] Authentification LDAP via nom d'utilisateur/mot de passe en PHP


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut [LDAP] Authentification LDAP via nom d'utilisateur/mot de passe en PHP
    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:

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    <?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. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    Ton session_start est fait trop tard : des informations ont déjà été envoyées au navigateur.

    Un conseil remonte le à la première ligne.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut Authentification LDAP via nom d'utilisateur/mot de passe en PHP
    bonjour à tous ,

    j'ai un probléme dauthentification ldap en php et je ne vois pas ou viens 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 sont bon voilà mon code:

    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
    <?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 merci de m'aider si vous pouvez car je suis dans une galére incroyable

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <?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 
    ?>

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Par défaut
    comme je l'ai précisé dans ton autre sujet ton session_start intervient trop tard tu devrais le déplacer tout en haut

  5. #5
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut
    tu dois placer ton session_start comme le dit ratapapa tout en haut à 99.9999% lorsque tu développes une appli

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut authentification ldap via login/password en php
    c'est fais mais j'ai le même probléme

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Par défaut authentification ldap via login /password en php
    j'arrive à me logger maintenant en faite pour le login il fallait mettre le DN de la personne et non ce CN uniquement pouriez vous me dire ce que je dois modifier pour pouvoir me logger avec le cn sans ajouter le baseDN merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LDAP] Authentification LDAP avec Active Directory
    Par sco_didier dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 20/01/2009, 16h36
  2. [htaccess] Renseigner nom d'utilisateur / mot de passe
    Par dj-julio dans le forum Langage
    Réponses: 12
    Dernier message: 25/04/2008, 09h57
  3. [LDAP] Authentification LDAP
    Par lolodelp dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 22/02/2008, 16h23
  4. [LDAP] Requête pour vérifier le login et mot de passe
    Par NiGHtyWolf dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/03/2007, 22h44
  5. erreur 1045: Accès refusé pour l'utilisateur mot de passe : OUI
    Par antrax2013 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/05/2006, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo