Authentification et groupes d'accès

L’authentification sur le wiki se fait grâce au serveur LDAP. Tout membre ayant un compte LDAP peut donc se connecter au wiki.

Pour passer d’une méthode d’authentification basée sur la création de comptes spécifiques à Dokuwiki vers l’utilisation d’un annuaire LDAP, quelques changements sont nécessaires. Attention, toujours faire ces tests sur un wiki de test, sous peine de perdre toute possibilité de s’authentifier.

  • Veiller à ce que l’extension PHP LDAP soit installée (sous Debian-like : php7.0-ldap)
  • Activer le plugin LDAP (Administrer → Gestionnaire d’extensions → LDAP Auth Plugin → Activer)
  • Changer les paramètres (Administrer → Paramètres de configuration). Ci-dessous, on trouve un extrait de html/config/local.php, présent à la racine du volume Dokuwiki et qui correspond aux paramètres personnalisés. Ces derniers peuvent être modifiés depuis l’interface d’administration, mais il est plus pratique de copier le fichier de configuration :
// Utiliser les ACL
$conf['useacl'] = 1;
// Méthode d'authentification
$conf['authtype'] = 'authldap';
// Adresse du serveur LDAP
$conf['plugin']['authldap']['server'] = 'ldaps://ldap.picasoft.net';
$conf['plugin']['authldap']['port'] = 636;
// DN des users et des groupes
$conf['plugin']['authldap']['usertree'] = 'ou=People,dc=picasoft,dc=net';
$conf['plugin']['authldap']['grouptree'] = 'ou=Groups,dc=picasoft,dc=net';
// Filtre pour trouver l'utilisateur : on cherche une entrée posixAccount avec l'UID correspondant
$conf['plugin']['authldap']['userfilter'] = '(&(uid=%{user})(objectClass=posixAccount))';
// Filtre pour chercher les groupes : ce sont des posixGroup et on peut chercher par GID ou par utilisateur (groupe secondaire)
$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUid=%{user})))';
// À ne pas changer
$conf['plugin']['authldap']['version'] = 3;
// Compte LDAP en lecture seule sur les utilisateurs (sans le mot de passe!)
$conf['plugin']['authldap']['binddn'] = 'cn=wiki,ou=Services,dc=picasoft,dc=net';
// Hash du mot de passe du compte lecture seule, plus facile de le set depuis l'interface
$conf['plugin']['authldap']['bindpw'] = 'XXXX';
// Quel champ donne le nom de la personne ?
$conf['plugin']['authldap']['userkey'] = 'cn';
// Permettre la modif de mot de passe LDAP depuis Dokuwiki
$conf['plugin']['authldap']['modPass'] = 1;

Tout devrait être bon. On pourra afficher les informations de debug une fois connecté pour vérifier que l’on appartient bien aux bon groupes. Ensuite, on refera les ACL en fonction des nouveaux groupes LDAP.

Question:

Quels sont les groupes disponibles sur Dokuwiki ?

A Savoir:

Le serveur LDAP définit trois groupes : member, tech et admin. Lorsqu’un utilisateur se connecte sur le wiki, son groupe est également récupéré.

De plus, Dokuwiki propose :

Historiquement, il y avait des sections privées sur le wiki. Maintenant, toutes les pages sont publiques.

  • Tous les utilisateurs connectés peuvent éditer les pages.
  • Les membres du groupe tech ou admin peuvent administrer le wiki.

La configuration se fait à deux endroits. Pour l’administration, on définit au niveau de la méthode d'authentification les groupes qui ont automatiquement tous les droits (@admin,@tech).

A Savoir:

Le @ désigne un groupe dans Dokuwiki.

Pour le contrôle d’accès (ACL), on se rend sur cette page.

L’arborescence à gauche permet de choisir une catégorie sur laquelle vont s’appliquer les restrictions. Pour l’ensemble du wiki, on cliquera sur la racine.

Les contrôles d’accès actuels sont situés en bas. Ils peuvent évoluer au fil des besoins. Un exemple :

  • Tous les utilisateurs connectés peuvent faire toutes les actions possibles sur les pages (groupe par défaut user)
  • Tout le monde peut lire l’ensemble des pages…
  • Sauf les pages de la section :asso:prive, relicat d’un ancien système.

Note:

Dans ce cas, les membres de tech et admin peuvent quand même consulter la catégorie :asso:prive, car ils ont tous les droits quels que soient les contrôles d’accès.

Pour ajouter une nouvelle règle, on choisit une catégorie et on recherche le groupe ou l’utilisateur concerné (en général, le groupe). Par exemple, pour ajouter des droits de lecture au groupe tengo sur la section :technique (à supposer que ce groupe existe dans le LDAP)…

Attention:

Les ACL choisissent toujours l’option la plus restrictive : dans ce cas, seuls les utilisateurs du groupe tengo pourront lire la section concerné, malgré la règle autorisant @ALL à lire tout le wiki.

  • technique/adminserv/wiki/auth_acl.txt
  • de qduchemi