Authentification des utilisateurs

Lors de la connexion à l'application CMS Ametys, un contributeur doit fournir des informations identification. Après vérification de ses informations, il sera autorisé ou non à accéder au CMS.

Le CMS Ametys fournit plusieurs moyens pour authentifier les utilisateurs. C'est le rôle de l'intégrateur de choisir parmi ses solutions proposées, celle qui lui convient en fonction de ses besoins.

Il devra pour cela répondre à ses 3 questions :

  • comment le contributeur doit-t-il saisir ses identifiants de connexion (login / mot de passe) ? Popup, Formulaire, Serveur CAS ...
  • comment vérifie-t-on que le login et le mot de passe saisis sont corrects ?
  • comment vérifie-t-on que le contributeur a bien les droits d'accéder à l'application ?
  1. Processus d'authentification
    1. Récupération des identifiants : choix du CredentialsProvider
      1. Authentification automatique : org.ametys.runtime.plugins.core.authentication.Defined
      2. Authentification HTTP basique : org.ametys.runtime.plugins.core.authentication.Basic
      3. Formulaire de connexion : org.ametys.runtime.plugins.core.authentication.FormBased
      4. Authentification réseau : org.ametys.runtime.plugins.core.authentication.Remote ou org.ametys.runtime.plugins.core.authentication.Jcifs
      5. Authentification CAS : org.ametys.runtime.plugins.core.authentication.CAS ou org.ametys.runtime.plugins.core.authentication.GatewayCAS
      6. Authentification CAS + HTTP basique : org.ametys.runtime.plugins.core.authentication.GatewayCASBasic
    2. Le gestionnaire d'authentification :
      1. org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication
      2. org.ametys.runtime.plugins.core.authentication.HasRightAuthentication
      3. org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication
    3. Vérification de l'existence du login
  2. Règles d'utilisation
  3. FAQ

Processus d'authentification

L'authentification est un processus en 3 étapes :

  1. Récupération du login
    Le choix du CredentialsProvider définit comment est récupéré le login et éventuellement le mot de passe de l'utilisateur: pop-up, formulaire, CAS, ...
  2. Autorisation du login
    L'AuthenticationManager détermine la manière de procéder : vérification du mot de passe, vérification qu'un utilisateur à au moins un droit, ...
  3. Vérification que le login est bien dans la base de données des contributeurs ;
    Le UsersManager gère la base de données des contributeurs (son fonctionnement est décrit dans la page Gestion des utilisateurs)

Le schéma ci-dessous représente ce processus d'authentification, détaillé dans les paragraphes suivants :


Récupération des identifiants : choix du CredentialsProvider

Le point d'extension org.ametys.runtime.authentication.CredentialsProvider permet de définir le mode de récupération des identifiants d'un utilisateur se connectant à l'application.

Il s'agit d'un point d'extension simple, c'est à dire qu'une seule implémentation peut être choisie

Le choix du "credentials provider" s'effectue au travers du fichier WEB-INF/param/runtime.xml de l'application (cf. Fichier runtime.xml) ou au travers de l'outil "Plugins et Workspace" disponible depuis l'interface d'administration.

A ce jour, les extensions disponibles pour ce point d'extension sont les suivantes :

Authentification automatique : org.ametys.runtime.plugins.core.authentication.Defined

L'extension org.ametys.runtime.plugins.core.authentication.Defined définit un seul contributeur "anonymous", automatiquement connecté.
Le mot de passe n'est pas vérifié dans l'étape suivante.

Cette valeur est utilisée par exemple pour une démonstration si l'on ne souhaite pas passer par l'étape de saisie du login et du mot de passe.

Pour aller plus loin
Pour créer une connexion automatique avec votre propre contributeur, veuillez consulter la page Connexion automatique personnalisée.

 

Authentification HTTP basique : org.ametys.runtime.plugins.core.authentication.Basic

Dans ce mode les identifiants de connexion sont demandés à l'utilisateur par le navigateur, au travers d'une pop-up.

Ce mode requiert le paramètre de configuration "realm" identifiant le domaine de protection.

Le mot de passe doit être vérifié dans l'étape suivante.

Formulaire de connexion : org.ametys.runtime.plugins.core.authentication.FormBased

Dans ce mode l'utilisateur fournit ses identifiant au travers d'un formulaire HTML. Le mot de passe doit être vérifié dans l'étape suivante.

Ce formulaire est utilisé par exemple quand on souhaite personnaliser la page de saisie du login et du mot de passe


Pour aller plus loin
Pour afficher votre propre formulaire de connexion, suivez les instruction de la page de Création d'un plugin de formulaire de connexion.

 

Authentification réseau : org.ametys.runtime.plugins.core.authentication.Remote ou org.ametys.runtime.plugins.core.authentication.Jcifs

Ces extensions définissent une authentifications réseau. Le mot de passe n'a pas besoin d'être vérifié dans l'étape suivante.

Ces valeurs sont utilisées dans le cadre d'utilisation de réseaux d'authentification (SSO).

Authentification CAS : org.ametys.runtime.plugins.core.authentication.CAS ou org.ametys.runtime.plugins.core.authentication.GatewayCAS

Ces extensions permettent une authentification sur un serveur CAS (authentification unique Single Sign On). L'utilisateur est authentifié par le serveur CAS, le mot de passe n'a donc pas besoin d'être vérifié dans l'étape suivante.

L'extension org.ametys.runtime.plugins.core.authentication.GatewayCAS permet d'utiliser CAS en mode "gateway". Il s'agit d'une implémentation réservée à l'application front-office.
En effet dans ce mode, on récupère le login de l'utilisateur si il était déjà authentifié sur le serveur CAS. Dans le cas contraire, l'écran de connexion lui est présenté uniquement si il demande explicitement à se connecter (bouton Connexion). Ainsi, dans un site de type extranet, l'internaute a accès aux pages à accès limité si il est authentifié sur le serveur CAS, en revanche s'il n'est pas connecté il pourra naviguer dans le reste du site sans avoir accès aux pages à accès limité.

Authentification CAS + HTTP basique : org.ametys.runtime.plugins.core.authentication.GatewayCASBasic

Cette extension combine une authentification CAS en mode "gateway" et une authentification HTTP basique:

  • cette implémentation vérifie d'abord si l'utilisateur est connecté sur le serveur CAS. Si c'est le cas, le mot de passe n'a pas besoin d'être vérifié dans l'étape suivante.
  • si l'utilisateur n'est pas authentifié sur le serveur CAS, ses identifiants de connexion sont demandés au travers d'une pop-up comme pour l'authentification HTTP basique. Le mot de passe doit être vérifié dans l'étape suivante.

 

Le gestionnaire d'authentification :

Le point d'extension org.ametys.runtime.authentication.AuthenticationManager détermine si le login est autorisé à se connecter à l'application.

Il s'agit d'un point d'extension multiple: c'est à dire que plusieurs implémentations peuvent cohabiter.

Le choix de la ou des instanciations du AuthenticationManager s'effectue au travers du fichier WEB-INF/param/authentication.xml de l'application ou au travers de l'outil "Plugins et Workspace" disponible depuis l'interface d'administration.

Exemple de fichier authentication.xml

<?xml version="1.0" encoding="UTF-8"?>
<authentications>
    <authentication>org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication</authentication>
	<authentication>org.ametys.runtime.plugins.core.authentication.HasRightAuthentication</authentication>
</authentications>

A ce jour, les extensions disponibles pour ce point d'extension sont les suivantes :

Important
Le choix du gestionnaire authentification doit être cohérent avec le choix du CredentialsProvider. En effet, certains CredentialsProvider nécessite la vérification du mot de passe, d'autres non.
Consultez règles d'utilisation pour faire votre choix.

org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication

L'extension org.ametys.runtime.plugins.core.authentication.UsersManagerAuthenticationvérifie le login et le mot de passe dans la base des contributeurs.

Cette extension est à utiliser dès lors que le choix du CredentialProvider nécessite la vérification des identifiants (login et mot de passe)

org.ametys.runtime.plugins.core.authentication.HasRightAuthentication

L'extension org.ametys.runtime.plugins.core.authentication.HasRightAuthentication autorise la connexion de l'utilisateur à l'application si et seulement si l'utilisateur possède au moins un droit quelconque sur l'application.

Cette valeur est utile lorsque la base des utilisateurs est plus large que la population devant avoir accès au CMS. Par exemple lorsque la base des utilisateurs se trouvent sur un annuaire LDAP contenant l'ensemble du personnel/étudiants/... alors que seulement une partie restreinte du personnel doit avoir accès au back-office.
 

org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication

Cette extension est à utliser uniquement dans le cas du org.ametys.runtime.plugins.core.authentication.GatewayCASBasic. Les identifiants de connexion ne sont vérifiés que dans le cas où l'utilisateur s'est connecté en mode HTTP basique.

 

Vérification de l'existence du login

La dernière étape consiste à vérifier que le login existe dans la base de données des contributeurs (annuaire LDAP, base de données SQL, ...).

Cette étape est délégué au gestionnaire des utilisateurs (UserManager)

 

Règles d'utilisation

Quelques règles doivent être respectées quant au choix du fournisseurs d'identifiants (CredentialsProvider), du gestionnaire d'authentification (AuthenticationManager) et du gestionnaire d'utilisateurs (UsersManager).

Le tableau ci-après liste la compatibilité des extensions entre-elles:

 

Fournisseur d'identifiants : CredentialsProviderGestionnaire d'authentification : AuthenticationManagerGestionnaire d'utilisateurs : UsersManager
  • HTTP basique : org.ametys.runtime.plugins.core.authentication.Basic
  • Formulaire : org.ametys.runtime.plugins.core.authentication.FormBased

org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication

org.ametys.runtime.plugins.core.authentication.HasRightAuthentication

org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication

Dans le cas d'une authentification HTTP basique ou via un formulaire d'authentification, le gestionnaire d'utilisateurs doit être capable de vérifier le mot de passe

  • org.ametys.runtime.plugins.core.user.CoreCredentialsAwareJdbc
  • org.ametys.runtime.plugins.core.user.CoreModifiableCredentialsAwareJdbc
  • org.ametys.runtime.plugins.core.CredentialsAwareLdap
  • Anonyme : org.ametys.runtime.plugins.core.authentication.Defined

org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication

org.ametys.runtime.plugins.core.authentication.HasRightAuthentication

org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication

  • org.ametys.runtime.plugins.core.user.Static
  • Authentification CAS : org.ametys.runtime.plugins.core.authentication.CAS
  • Authentification réseau: org.ametys.runtime.plugins.core.authentication.Remote
  • Authentification réseau: org.ametys.runtime.plugins.core.authentication.Jcifs

org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication

org.ametys.runtime.plugins.core.authentication.HasRightAuthentication

org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication

Dans le cas d'une authentification CAS ou réseau, la vérification du mot de passe n'est pas à la charge du gestionnaire d'utilisateurs

  • org.ametys.runtime.plugins.core.user.CoreModifiableJdbc
  • org.ametys.runtime.plugins.core.Ldap
  • Authentification CAS ou HTTP basique : org.ametys.runtime.plugins.core.authentication.GatewayCASBasic

org.ametys.runtime.plugins.core.authentication.UsersManagerAuthentication

org.ametys.runtime.plugins.core.authentication.HasRightAuthentication

org.ametys.runtime.plugins.core.authentication.mixed.MixedSourceUsersManagerAuthentication

  • org.ametys.runtime.plugins.core.CredentialsAwareLdapAndJdbc

FAQ

Si vous rencontrez un problème ou si vous vous posez une question, consultez la FAQ ou à aller sur notre forum dans la section Paramétrage et intégration.