Ce module autorise l'authentification sur un annuaire LDAP avec utilisation de l'ACL. Il est inclut dans DokuWiki.
Les utilisateurs peuvent se connecter au wiki avec les identifiants definies sur le serveur LDAP, l'ajout de nouveau utilisateurs n'est pas supporté.
C'est un exemple de configuration à mettre dans votre conf/local.php afin d'activer l'authentification sur un annuaire LDAP.
$conf['useacl'] = 1; $conf['openregister']= 0; $conf['authtype'] = 'ldap'; #$conf['auth']['ldap']['server'] = 'localhost'; #$conf['auth']['ldap']['port'] = 389; $conf['auth']['ldap']['server'] = 'ldap://server.tld:389'; #instead of the above two settings $conf['auth']['ldap']['usertree'] = 'ou=People, dc=server, dc=tld'; $conf['auth']['ldap']['grouptree'] = 'ou=Group, dc=server, dc=tld'; $conf['auth']['ldap']['userfilter'] = '(&(uid=%{user})(objectClass=posixAccount))'; $conf['auth']['ldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))'; # This is optional but may be required for your server: #$conf['auth']['ldap']['version'] = 3; # This enables the use of the STARTTLS command #$conf['auth']['ldap']['starttls'] = 1; # This is optional and is required to be off when using Active Directory: #$conf['auth']['ldap']['referrals'] = 0; # Optional bind user and password if anonymous bind is not allowed (develonly) #$conf['auth']['ldap']['binddn'] = 'cn=admin, dc=my, dc=home'; #$conf['auth']['ldap']['bindpw'] = 'secret'; # Mapping can be used to specify where the internal data is coming from. #$conf['auth']['ldap']['mapping']['name'] = 'displayname'; # Name of attribute Active Directory stores it's pretty print user name. #$conf['auth']['ldap']['mapping']['grps'] = array('memberof' => '/CN=(.+?),/i'); # Where groups are defined in Active Directory # Optional debugging #$conf['auth']['ldap']['debug'] = 1;
Vous pouvez utiliser le paramètre version pour dire à PHP d'utiliser la version 3 du protocole LDAP pour se connecter au serveur, par défaut la version 2 est utilisé.
userfilter définie le filtre LDAP utilisé afin de chercher un utilisateur. groupfilter est utilisé pour trouver les groupes d'un utilisateur.
Les variables suivantes sont utilisable pour userfilter et groupfilter :
| variable | signification |
|---|---|
| %{user} | Le nom d'utilisateur utilisé pour la connexion |
| %{server} | La valeur fournie par $conf['auth']['ldap']['server'] |
groupfilter peux aussi accéder aux attributs fournit par l'objet utilisateur :
| variable | signification |
|---|---|
| %{dn} | The users dn eg. uid=user,ou=People,dc=server,dc=dk |
| %{uid} | The uid of the user eg. user |
| %{…} |
Le mapping est utilisé pour les annuaires qui n'utilisent pas des noms standards pour les attributs. For all variables but 'grps' only the first attribute is used to replace the variable if more than one is provided.
| variable | mapping | meaning |
|---|---|---|
| grps | array('memberof' ⇒ '/CN=(.+?),/i') | Replace the content of grps with what is provided in the attribute memberof and apply this regexp /CN=(.+?),/i to every element in it. |
| name | 'displayname' | Replace the content of name with first element of 'displayname' attribute. |
L'authentification est effectuée dans ces étapes:
$conf['auth']['ldap'] et déterminer la structure du serveur LDAP.Voici une liste d'exemples de configuration utilisés par différents utilisateurs pour différents serveurs LDAP. Ce sont des exemples ! N'oubliez pas de les adapter à vos paramètres serveur.