Projet

Général

Profil

Actions

Evolution #239

fermé

Authentification LDAP

Ajouté par Laurent Pelecq il y a presque 12 ans. Mis à jour il y a plus de 5 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Catégorie:
Core
Version cible:
-
Début:
06/05/2012
Echéance:
% réalisé:

0%

Temps estimé:

Description

L'authentification peut soit être codée en dur dans Galette (Solution 1) ou mise à disposition dans un plugin à condition de permettre de déléguer l'authentification aux plugins (Solution 2). La deuxième solution est plus flexible.

Solution 1 : codage direct dans Galette

Il faut une page d'administration qui permette de saisir
  1. L'URL LDAP
  2. DN de connexion
  3. Mot de passe de connexion
  4. Filtre de recherche
  5. Filtre de sélection

L'URL est de type ldap://HOSTNAME ou ldaps://HOSTNAME. On peut aussi accepter HOSTNAME:PORT.

Le DN de connexion sert à rechercher le DN de l'utilisateur à l'aide du filtre. Il peut-être vide si une connexion anonyme suffit. Le filtre de recherche contient un emplacement pour insérer le login de galette.

Dans l'exemple suivant, on utilise $login comme variable :

 (&(objectClass=inetOrgPerson)(uid=$login))

Le filtre de sélection permet de restreindre l'accès aux utilisateurs appartenant à un groupe donné par exemple. Le résultat de la requête doit être non vide. Les variables seront les champs récupérés dans l'entrée LDAP de l'utilisateur lors de la première recherche ($dn pour le DN, $mail pour le mail, ...). Pour sélectionner que les membres du groupe galette, on mettra par exemple :

 (&(objectClass=groupOfUniqueNames)(cn=galette)(uniqueMember=$dn))

La page doit permettre d'activer ou désactiver l'authentification. Les paramètres peuvent être sauvés dans un fichier ou dans la base (prévoir la mise à jour). Ils devront être accessible aux plugins qui utiliseront LDAP.

L'authentification se fera en 3 temps (cf. exemple d'autehntification) :
  1. connexion à l'annuaire pour récupérer le DN de l'utilisateur grâce
    au filtre de recherche,
  2. contrôle de l'accès avec le filtre de sélection s'il existe
  3. connexion avec le DN de l'utilisateur et le mot de passe.

En cas d'échec, on s'authentifie avec la méthode par défaut ce qui permet d'avoir des comptes d'administration gérés en dehors de LDAP.

Le changement de mot de passe devra d'abord être délégué à LDAP (cf. implémentation) puis au mécanisme de base. La recherche de l'utilisateur se fera de la même façon avec les deux filtres.

Solution 2 : la délégation au plugins

La page d'administration LDAP et l'implémentation de la classe d'authentification seront déléguées au plugin. Il faudra prévoir une page d'administration qui propose les méthodes d'authentification fournies par les plugins. On peut envisager de chainer les mécanismes dans un ordre particulier. Le changement de mot de passe devra aussi être délégué aux plugins dans le même ordre.

Le plugin fournira un fichier login.php qui contiendra une classe d'authentification qui implémentera au moins les méthodes suivantes :
  • login(username, password)
  • changePassword(username, password)
  • exists(username)

Il n'y a pas de méthode logout. C'est Galette qui gère le cycle de vie des sessions. Le plugin ne fait qu'authentifier l'utilisateur.


Demandes liées 1 (0 ouverte1 fermée)

Duplique Galette - Souhaits #764: Client OpenIDRejeté21/12/2013

Actions
Actions

Formats disponibles : Atom PDF