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();
}
}
?> |
Partager