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é