But de la multi authentification : être capable de gérér plusieurs schémas d'authentification externes.
Définition¶
Schéma d'authentification : correspond au fonctionnement à l'heure actuelle. C'est à dire la définition de :- un annuaire LDAP et/ou
- un serveur IMAP, POP et/ou
- un serveur CAS
Méthode : un moyen d'authentifier les utilisateurs (ldap, cas, etc)
Fonctionnement attendu¶
Lorsque l'utilisateur se connecte, on teste :- CAS avant tout, puis si nécessaire (Est-ce à mettre dans le schéma ?? car à part. On ne peut en utiliser qu'un seul à priori.)
nb:si CAS ou SSO ou autre authentification (module sspi), a priori le reste n'est pas a faire sauf a faire synchronisation automatique du user - IMAP ou POP, puis si nécessaire
- LDAP ou AD
La première méthode qui permet d'authentifier l'utilisateur est stockée en base de données.
--> le déroulement des authentifications est-il fixe, ou peut-il changer (un admin qui préfère tester d'abord ldap avec imap par ex ??).
Le mécanisme est décrit en détail sur ce ticket : #822
Tâches à faire¶
- externaliser la configuration des méthodes d'authentification dans des tables à part
- implémenter un mécanisme permettant de tester à la suite toutes les méthodes d'auth jsqu'à en trouver une qui fonctionne
- ajouter une date de dernière connexion de l'utilisateur
Propositions d'implémentations
Base de données =
Il faut créer plusieurs nouvelles tables :
- glpi_auth_ldap : pour stocker toutes les configurations d'annuaire possibles
- glpi_auth_mail : pour stocker toutes les configurations imap ou pop
Dans glpi_users :
- id_auth : id de la méthode utilisée
- auth_method : la méthode d'auth utilisée
- last_login : type date indiquant la dernière authentification de l'utilisateur
On laisse dans glpi_config la configuration du serveur CAS.
Module d'authentification¶
- prévoir une boucle sur toutes les méthodes d'auth.
- si le user ne s'est jamais authentifié, on teste les méthodes à la suite, jusqu'à trouver la bonne. On inscrit celle-ci dans la table glpi_users
- si le user s'est déjà authentifié, on teste en premier la méthode précisée dans glpi_users. Si elle n'est pas correcte, on reteste ensuite les autres méthodes (quand on trouve une correcte on met à jour glpi_users ??? -> oui :) )
- si l'auth réussie est LDAP, on remonte les informations de l'utilisateur depuis l'annuaire. (une seule conf pour les champs ldap, ou une par annuaire ???).
Ecrans à réaliser¶
Il faut réaliser des écrans pour :- lister les méthodes d'authentification, pouvoir ajouter une méthode ou en supprimer une
- définition d'une méthode d'authentification en reprenant l'écran actuel des schémas d'auth
- bouton permettant de tester la connexion à l'annuaire ou au serveur POP/IMAP pour une configuration donnée
- dans la page utilisateur indique le type d'auth et la méthode utilisée. Ajouter un lien si l'utilisateur a les droits "user" "w" un lien vers la page du serveur d'auth
- ajouter des champs de recherche pour méthode d'auth, id du serveur et last_login dans le moteur de recherche
cas doublons¶
- le fait d'avoir plusieurs annuaires LDAP augmente la proba d'avoir des doublons : priorité au premier trouvé