Auth_Container_LDAP

Auth_Container_LDAP – Identification en utilisant un serveur LDAP

Conteneur LDAP

Ce conteneur de stockage utilise l'extension LDAP pour charger les données de l'utilisateur depuis un serveur LDAP.

L'argument spécifique de stockage pour le constructeur Auth() est un tableau d'options.

Options disponibles
Option Type de données Valeur par défaut Description
"host" string "localhost" Le nom de l'hôte ou l'adresse IP du serveur LDAP
"port" integer 389 Le port du serveur LDAP
"url" string " Un URL complète pour spécifier le protocole, l'URL et le port de connexion. Ceci permet de spécifier ldaps://. Attention aux options "host" et "port". Ne fonctionne que si PHP a été compilé avec les bibliothèques OpenLDAP 2+.
"version" integer 2 Version LDAP à utiliser, habituellement 2 (par défaut) ou 3, doit être un entier !
"referrals" boolean TRUE Si défini, détermine si la bibliothèque LDAP suit automatiquement les références retournées par le serveur LDAP ou pas.
"binddn" string " Si défini, la recherche d'utilisateur sera effectuée après le liage de cet utilisateur, sinon, le liage sera anonyme. Ceci permet le fonctionnement du conteneur avec MS Active Directory, mais devrait fonctionner avec tous les serveurs qui sont configurés en ce sens. Ce doit être un dn complet (basedn et userdn ne doivent pas être ajoutés).
"bindpw" string " Le mot de passe à utiliser pour le liage avec binddn.
"basedn" string " Le DN de base de votre serveur.
"userdn" string " Est ajouté à basedn lors de la recherche d'utilisateurs.
"userscope" string "sub" Portée lors de la recherche d'un utilisateur : one, sub (par défaut) ou base.
"userattr" string "uid" Définit l'attribut à chercher.
"userfilter" string "(objectClass=posixAccount)" Filtre qui sera ajouté au filtre de recherche, de cette façon : (&(userattr=username)(userfilter)).
"attributes" array array('') Tableau d'attributs additionnels pour l'entrée. Ils seront ajoutés aux données d'identification et pourront être récupérés via Auth::getAuthData() . Un tableau vide récupérera tous les attributs, array('') ne récupérera aucun attribut (par défaut). Si vous ajouter 'dn' en tant que valeur à ce tableau, l'utilisateur DN qui est utilisé pour le liage, sera ajouté aux données d'identification.
"attrformat" string "AUTH"

Le format retourné des données additionnels définies dans l'option 'attributes'. Deux formats sont disponibles.

LDAP retourne les données formattées dans un tableau multidimentionnel où chaque tableau commence par un élément 'count' fournissant le nombre d'attributs dans l'entrée, ou le nombre de valeurs pour les attributs. Lorsque défini en ce format, la seule façon de récupérer les données depuis l'objet Auth est d'appeler getAuthData('attributes'). C'est le format par défaut avant la version 1.3.0.

AUTH retourne les données formattées dans une structure plus standard avec les autres conteneurs Auth, où chaque élément d'attributs peut être directement appelé par la méthode getAuthData() depuis la classe Auth. Ceci est devenu par défaut depuis la version 1.3.0.

"groupdn" string " A ajouter à basedn lors de la recherche d'un groupe.
"groupattr" string "cn" L'attribut de groupe à rechercher.
"groupfilter" string "(objectClass=groupOfUniqueNames)" Filtre qui sera ajouté au filtre de recherche lors de la recherche d'un groupe : (&(groupattr=group)(memberattr=username)(groupfilter)).
"memberattr" string "uniqueMember" L'attribut de l'objet de groupe, où l'utilisateur DN doit être trouvé.
"memberisdn" boolean TRUE Si le memberattr est le dn de l'utilisateur (par défaut) ou la valeur de l'userattr (habituellement uid).
"group" string " Le nom du groupe dont les utilisateurs doivent être membres pour une identification réussie.
"groupscope" string "sub" Portée de recherche du groupe : one, sub (par défaut), ou base.
"start_tls" boolean "false" Active/Désactive l'utilisation d'un connexion crypté START_TLS.
"try_all" boolean FALSE Si plusieurs entrées sont retournées par la recherche, tente d'identifier chaque entrée dans l'ordre ou juste la première (par défaut).
"debug" boolean FALSE Active l'affichage des messages de débogage.

Identification en utilisant un serveur LDAP

<?php
$a1 
= new Auth("LDAP", array(
   
'host' => 'localhost',
   
'port' => '389',
   
'version' => 3,
   
'basedn' => 'o=netsols,c=de',
   
'userattr' => 'uid',
   
'binddn' => 'cn=admin,o=netsols,c=de',
   
'bindpw' => 'password'
   
));
?>

Nécessite que les utilisateurs fournis appartiennent à des groupes spécifiques

<?php
$a2 
= new Auth('LDAP', array(
   
'url' => 'ldaps://ldap.netsols.de',
   
'basedn' => 'o=netsols,c=de',
   
'userscope' => 'one',
   
'userdn' => 'ou=People',
   
'groupdn' => 'ou=Groups',
   
'groupfilter' => '(objectClass=posixGroup)',
   
'memberattr' => 'memberUid',
   
'memberisdn' => false,
   
'group' => 'admin'
   
));
?>

Identification sur un serveur Microsoft Active Directory

<?php
$a3 
= new Auth('LDAP', array(
   
'host' => 'ldap.netsols.de',
   
'port' => 389,
   
'version' => 3,
   
'referrals' => false,
   
'basedn' => 'dc=netsols,dc=de',
   
'binddn' => 'cn=Jan Wagner,cn=Users,dc=netsols,dc=de',
   
'bindpw' => 'password',
   
'userattr' => 'samAccountName',
   
'userfilter' => '(objectClass=user)',
   
'attributes' => array(''),
   
'group' => 'testing',
   
'groupattr' => 'samAccountName',
   
'groupfilter' => '(objectClass=group)',
   
'memberattr' => 'member',
   
'memberisdn' => true,
   
'groupdn' => 'cn=Users',
   
'groupscope' => 'one',
   ));
?>

Lors de la conversation avec un serveur Microsoft ActiveDirectory, vous devez utiliser 'samaccountname' comme 'userattr' et suivre des règles spéciales pour traduire les noms des dossiers ActiveDirectory en 'basedn'. Le 'basedn' pour le dossier par défaut 'Users' d'un serveur ActiveDirectory pour le domaine ActveDirectory (qui n'est pas en relation avec son nom DNS) "win2000.example.org" serait : "CN=Users, DC=win2000, DC=example, DC=org" où chaque composant du nom du domaine devient son propre attribut DC. Si vous voulez utiliser un dossier utilisateur personnalisé, vous devez remplacer "CN=Users" avec un séquence d'attributs "OU" spécifiant le chemin vers votre dossier personnalisé, dans l'ordre inverse. Donc, le dossier ActiveDirectory "win2000.example.org\Custom\Accounts" devriendra "OU=Accounts, OU=Custom, DC=win2000, DC=example, DC=org"

Il semble que le liage anonyme à un serveur Active Directory ne soit pas permis, vous devez donc définir un binddn et un bindpw pour la recherche d'utilisateur.

LDAP Referrals doit être définit à FALSE pour qu'AD fonctionne, parfois...

Notez également que si vous voulez une connexion cryptée à un serveur MS LDAP, alors, sur votre serveur web, vous devez spécifier "TLS_REQCERT never" dans le fichier /etc/ldap/ldap.conf ou dans l'utilisateur du serveur web ~/.ldaprc (qui doit ou ne doit pas être lu, suivant votre configuration).

Identification en utilisant un serveur Kerberos 5 (Previous) Identification en utilisant une base de données via MDB (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.