Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Autres composants
Autres composants Forum de support sur les autres composants de Zend Framework.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/08/2011, 16h28   #1
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
Par défaut Zend_Ldap problème de connexion au serveur Active Directory

Bonjour a tous !

Je suis sur un projet Zend ou je dois récupérer la liste des utilisateurs d'un active directory (sur un windows server 2008). J'ai donc créé une classe qui permet aux utilisateurs de se connecter à mon application avec leurs identifiants sur l’active directory.

Mon problème est le suivant : dans 70 % des cas j'ai un message d'erreur 0x51 (Can't contact LDAP server) mais dans 30% des cas tout fonctionne parfaitement, je peux recupérer les utilisateurs qui peuvent se logguer. Bien entendu ce comportement intervient alors que je n'ai rien touché au code ni au serveur!!!

Voici la classe qui permet de se connecter

Code :
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
 
<?php
class ActiveDirectory extends Zend_Controller_Plugin_Abstract	
{
 
 
 
	//L'active directory
	private $ad;
 
	//l'hote de l'active directory
	private $_host;
	//le port de l'active directory
	private $_port;
	//le nom du domaine
	private $_accountDomainName;
	//booleen  autorisation des mot de passe vide (true = autorisé)
	private $_allowEmptyPassword;
	//fichier des utilisateurs
	private $_baseDn;
	//login
	private $_username;
	//mot de passe
	private $_password;
	//le tableau des options de connexion
	private $_options;
 
	/**
	 * Le constructeur de la classe. Se connecte a l'active directory
	 * grace aux parametres spécifiés
	 * @param  $host le serveur hote de l'active directory
	 * @param  $port le port d'écoute de l'active directory
	 * @param  $username le nom d'utilisateur pour ce connecté a l'active diretory (administrateur)
	 * @param  $password le mot de passe
	 * @param  $allowEmptyPassword booleen permettant d'autoriser ou non les mot de passe vide (true = autoriser)
	 * @param  $accountDomainName le nom du domaine de l'active directory
	 * @param  $baseDn dn des utilisateurs de l'active directory
	 */
    public function __construct($host, $port="", $username, $password="", $allowEmptyPassword, $accountDomainName, $baseDn)
    {
 
    	$this->_host = $host;
    	$this->_port = $port;
    	$this->_username = $username;
    	$this->_password = $password;
    	$this->_allowEmptyPassword = $allowEmptyPassword;
    	$this->_accountDomainName = $accountDomainName;
    	$this->_baseDn = $baseDn;
 
    	//on définit les options pour se connecter a l'active directory
    	$this->_options = array(
		    'host'                   => $this->_host,
    		'port'                   => $this->_port,
		    'username'               => $this->_username,
		    'password'               => $this->_password,
    	    'allowEmptyPassword'     => $this->_allowEmptyPassword,
		    'accountDomainName'      => $this->_accountDomainName,
		    'baseDn'                 => $this->_baseDn,
		);
 
		//on créer la connexion
    	$this->ad = new Zend_Ldap($this->_options);
    	//on se logue sur l'active directory
    	$this->ad->bind($this->_username, $this->_password);
 
 
 
    }
 
    /**
     * méthode qui retourne tous les utilisateurs de l'active directory
     * @return le tableau de utilisateurs de l'active directory
     */
    public function fetchAllEntries()
    {
 
    	$collection = $this->ad->searchEntries('(objectclass=person)');
    	return $collection;
    }
 
    /**
     * test si un utilisateur est valide si oui return cet utilisateur
     * @param $dn
     */
    public function testEntry($name, $password)
    {
 
    	$auth = Zend_Auth::getInstance();
 
    	$serveur2 = array('serveur2' => $this->_options);
 
 
		$adapter = new Zend_Auth_Adapter_Ldap($serveur2, $name,
                                      $password);
 
		$result = $auth->authenticate($adapter);
 
 
		return $result->isValid();
    }
 
    /**
     * return le baseDn du serveur active directory
     */
    public function getBaseDn()
    {
    	return $this->_baseDn;
    }
 
    /**
     * retourne le champ userPrincipalName de l'utilisateur de l'active directory connecté
     * @param $acctname
     */
    public function getUserPrincipalName($acctname)
    {
    	return $acctname.'@'.$this->_accountDomainName;
    }
 
    /**
     * ferme la connexion avec le serveur active directory
     */
    public function disconnect()
    {
    	$this->ad->disconnect();
    }
}
 
?>
Est-ce que quelqu'un a une idée? Est-ce mon code? Ou le serveur ?

Merci d'avance
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 18h55   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Ce genre d'erreurs survient quand le serveur LDAP n'est pas disponible d'où le message.

Je te conseils donc de catcher l'erreur et de la personnaliser à ta convenance en invitant à retenter plus tard ou autre
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 08h46   #3
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
merci pour ta réponse.

Mais c'est un peu gênant que le serveur LDAP soit si peu disponible. Est-ce qu'il y aurait des problèmes de configuration du serveur ?
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 09h57   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Non je doute à un soucis de configuration c'est plus au niveau de sa puissance que ça se joue surtout si il est pas mal interrogé et au niveau de tous ce qui est parfeu également
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 10h12   #5
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
je vais essayé de regarder de ce côté là.
Merci beaucoup
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 14h13   #6
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
j'ai vérifié au niveau du par feu tout est ok.
De plus le serveur est peu interrogé donc je pense pas que ça soit dû a cela.
Merci quand même pour tes réponses.
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h46.


 
 
 
 
Partenaires

Hébergement Web