Authentification ldap en php via login/passw

Fermé
hismaella Messages postés 18 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 27 mars 2007 - 14 mars 2007 à 10:00
 juninho269 - 10 nov. 2007 à 13:35
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
A voir également:

3 réponses

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
hismaella Messages postés 18 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 27 mars 2007 2
16 mars 2007 à 15:54
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
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