Onglet Eole sso : Configuration du service SSO pour l'authentification unique

Le serveur EoleSSO est prévu pour être déployé sur un module EOLE.

Il est cependant possible de l'utiliser dans un autre environnement en modifiant manuellement le fichier de configuration /usr/share/sso/config.py.

Cette section décrit la configuration du serveur depuis l'interface de configuration du module disponible sur tous les modules EOLE. Les valeurs définies par défaut simplifient la configuration dans le cadre d'une utilisation prévue sur les modules EOLE.

Serveur local ou distant

L'activation du serveur EoleSSO s'effectue dans l'onglet Services.

La variable Utiliser un serveur EoleSSO permet :

  • non : de ne pas utiliser de SSO sur le serveur ;
  • local : d'utiliser et de configurer le serveur EoleSSO local ;
  • distant : d'utiliser un serveur EoleSSO distant (configuration cliente).

Adresse et port d'écoute

L'onglet supplémentaire Eole-sso apparaît si l'on a choisi d'utiliser un serveur EoleSSO local ou distant.

Configuration d'un serveur EoleSSO local
Configuration d'un serveur EoleSSO local

Dans le cas de l'utilisation du serveur EoleSSO local, Nom de domaine du serveur d'authentification SSO doit être renseigné avec le nom DNS du serveur.

Configuration d'un serveur EoleSSO distant
Configuration d'un serveur EoleSSO distant

Dans le cas de l'utilisation d'un serveur EoleSSO distant, seuls les paramètres Nom de domaine du serveur d'authentification SSO et Port utilisé par le service EoleSSO sont requis et les autres options ne sont pas disponibles car elles concernent le paramétrage du serveur local.

Remarque

Par défaut le serveur communique sur le port 8443. Il est conseillé de laisser cette valeur par défaut en cas d'utilisation avec d'autres modules EOLE.

Si vous décidez de changer ce port, pensez à le modifier également dans la configuration des autres machines l'utilisant.

Configuration LDAP

Le serveur EoleSSO se base sur des serveurs LDAP[1] pour authentifier les utilisateurs et récupérer leurs attributs.

Il est possible ici de modifier les paramètres d'accès à ceux-ci :

  • l'adresse et le port d'écoute du serveur LDAP ;
  • le chemin de recherche correspond à l'arborescence de base dans laquelle rechercher les utilisateurs (basedn) ;
  • un libellé à afficher dans le cas où un utilisateur aurait à choisir entre plusieurs annuaires/établissements pour s'authentifier (voir le chapitre Gestion des sources d'authentifications multiples) ;
  • un fichier d'informations à afficher dans le cadre qui est présenté en cas d'homonymes. Ces informations apparaîtront si l'utilisateur existe dans l'annuaire correspondant. Les fichiers doivent être placés dans le répertoire /usr/share/sso/interface/info_homonymes ;
  • DN[2] et mot de passe d'un utilisateur en lecture pour cet annuaire ;
  • attribut de recherche des utilisateurs : indique l'attribut à utiliser pour rechercher l'entrée de l'utilisateur dans l'annuaire (par défaut, uid)
  • choix de la disponibilité ou non de l'authentification par clé OTP[3] si disponible (voir plus loin).

Attention

Dans le cas où vous désirez fédérer EoleSSO avec d'autres fournisseurs de service ou d'identité (ou 2 serveurs EoleSSO entre eux), il est nécessaire de configurer un utilisateur ayant accès en lecture au serveur LDAP configuré.

Il sera utilisé pour récupérer les attributs des utilisateurs suite à réception d'une assertion d'un fournisseur d'identité (ou dans le cas d'une authentification par OTP).

Cet utilisateur est pré-configuré pour permettre un accès à l'annuaire local sur les serveurs EOLE.

Sur les modules EOLE, la configuration recommandée est la suivante :

  • utilisateur : cn=reader,o=gouv,c=fr
  • fichier de mot de passe : /root/.reader

Si vous connectez EoleSSO à un annuaire externe, vous devez définir vous même cet utilisateur :

  • Utilisateur de lecture des comptes ldap : renseignez son dn complet dans l'annuaire

  • fichier de mot de passe de l'utilisateur de lecture : entrez le chemin d'un fichier ou vous stockerez son mot de passe (modifiez les droits de ce fichier pour qu'il soit seulement accessible par l'utilisateur root)

Passer la variable Information LDAP supplémentaires (applications) à oui permet de configurer pour chaque annuaire LDAP déclaré des attributs supplémentaires qui seront utilisés par les applications web (DN racine de l'arbre utilisateurs, DN racine de l'arbre groupes, Champ 'nom d'affichage' de l'utilisateur, Champ 'mail' de l'utilisateur, Champ 'fonction' de l'utilisateur, Champ 'categorie' de l'utilisateur, Champ 'rne' de l'utilisateur, Champ 'fredurne' de l'utilisateur…).

Serveur SSO parent

Un autre serveur EoleSSO peut être déclaré en tant que serveur parent dans la configuration (adresse et port). Se reporter au chapitre traitant de la fédération pour plus de détails sur cette notion.

Si un utilisateur n'est pas connu dans le référentiel du serveur EoleSSO, le serveur essayera de l'authentifier auprès de son serveur parent (dans ce cas, la liaison entre les 2 serveurs s'effectue par l'intermédiaire d'appels XML-RPC[4] en HTTPS, sur le port défini pour le serveur EoleSSO).

Si le serveur parent authentifie l'utilisateur, il va créer un cookie de session local et rediriger le navigateur client sur le serveur parent pour qu'une session y soit également créée (le cookie de session est accessible seulement par le serveur l'ayant créé).

Attention

Ce mode de fonctionnement n'est plus recommandé aujourd'hui. Il faut préférer à cette solution la mise en place d'une fédération par le protocole SAML.

Prise en compte de l'authentification OTP

Il est possible de configurer EoleSSO pour gérer l'authentification par clé OTP à travers le protocole securID[5] de la société EMC (précédemment RSA).

Pour cela il faut :

  • installer et configurer le client PAM/Linux proposé par EMC (voir annexes)

  • Répondre oui à la question Gestion de l'authentification OTP (RSA SecurID)

Des champs supplémentaires apparaissent :

  • Pour chaque annuaire configuré, un champ permet de choisir la manière dont les identifiants à destination du serveur OTP sont gérés. 'inactifs' (par défaut) indique que l'authentification OTP n'est pas proposée à l'utilisateur. Avec 'identiques', le login local (LDAP) de l'utilisateur sera également utilisé comme login OTP. La dernière option est 'configurables', et indique que les utilisateurs doivent renseigner eux même leur login OTP. Dans ce dernier cas, l'identifiant est conservé sur le serveur EoleSSO pour que l'utilisateur n'ait pas à le renseigner à chaque fois (fichier /usr/share/sso/securid_users/securid_users.ini).

  • Le formulaire d'authentification détecte automatiquement si le mot de passe entré est un mot de passe OTP. Il est possible de modifier la reconnaissance si elle ne convient pas en réglant les tailles minimum et maximum du mot de passe et en donnant une expression régulière qui sera vérifiée si la taille correspond. Les options par défaut correspondent à un mot de passe de 10 à 12 caractères uniquement numériques.

Certificats

Les communications de et vers le serveur EoleSSO sont chiffrées.

Sur les modules EOLE, des certificats auto-signés sont générés à l'instanciation[6] du serveur et sont utilisés par défaut.

Il est possible de renseigner un chemin vers une autorité de certification et un certificat serveur dans le cas de l'utilisation d'autres certificats (par exemple, des certificat signés par une entité reconnue).

Les certificats doivent être au format PEM.

Fédération d'identité

Le serveur EoleSSO permet de réaliser une fédération vers un autre serveur EoleSSO ou vers d'autre types de serveurs compatibles avec le protocole SAML[7] (version 2).

Nom d'entité SAML du serveur eole-sso (ou rien) : nom d'entité du serveur EoleSSO local à indiquer dans les messages SAML. Si le champ est laissé à vide, une valeur est calculée à partir du nom de l'académie et du nom de la machine.

Cacher le formulaire lors de l'envoi des informations de fédération : permet de ne pas afficher le formulaire de validation lors de l'envoi des informations de fédération à un autre système. Ce formulaire est affiché par défaut et indique la liste des attributs envoyés dans l'assertion SAML permettant la fédération.

Autres options

Durée de vie d'une session (en secondes) : indique la durée de validité d'une session SSO sur le serveur. Cela n'influence pas la durée de la session sur les applications authentifiées, seulement la durée de la validité du cookie utilisé par le serveur SSO. Au delà de cette durée, l'utilisateur devra obligatoirement se ré-authentifier pour être reconnu par le serveur SSO. Par défaut, la durée de la session est de 3 heures (7200 secondes).

CSS par défaut du service SSO (sans le .css) : permet de spécifier une CSS différente pour le formulaire d'authentification affiché par le serveur EoleSSO. Le fichier CSS doit se trouver dans le répertoire /usr/share/sso/interface/theme/style/<nom_fichier>.css. Se reporter au chapitre personnalisation pour plus de possibilités à ce sujet.

Configuration en mode expert

Options générales

En mode expert plusieurs nouvelles variables sont disponibles :

  • Alias d'accès au service SSO (paramètre : __CAS_FOLDER) permet de créer un alias spécifique en plus du domaine et du port pour certains serveurs SSO tels que lemonLDAP[8] ou keycloak[9].

    Cette variable est disponible uniquement à partir de la version 2.6.2 d'EOLE.

  • Nom du cookie EoleSSO et Domaine du cookie EoleSSO permettent la gestion d'un cluster EoleSSO.

  • Générer des statistiques d'usage du service est à non par défaut.

    Si ce paramètre est à oui, EoleSSO va générer des statistiques sur l'usage du service (consommation mémoire, nombre de session...). Ces statistiques sont générées par la librairie python prometheus-client. Elles peuvent être intégrées à un outil tel que Grafana, et sont disponibles sur l'URL suivante : https://<adresse_serveur>:8443/metric.

  • Activer la balise meta viewport (CSS responsive) permet d'inclure la balise HTML meta viewport dans les pages de l'application (avec content="width=device-width, initial-scale=1"). Elle est à activer en cas d'utilisation d'une feuille de style CSS responsive.

  • Ne pas répondre aux demandes CAS des applications inconnues est à non par défaut

    Si ce paramètre est à oui, seules les applications renseignées dans les fichiers d'applications (/usr/share/sso/app_filters/*_apps.ini) sont autorisées à recevoir des réponses du serveur en mode CAS. Si il est à non, le filtre par défaut leur sera appliqué ;

  • À partir d'EOLE 2.6.2, la variable Nombre maximum de sessions en attente (backlog) permet de définir la taille de la file d'attente des sessions.

    Augmenter cette valeur est susceptible de résoudre des problèmes de lenteur voir de rejet des demandes d'authentification ;

  • Décalage de temps (en secondes) dans les messages de fédération SAML est à -300 secondes par défaut

    Ce décalage est appliqué aux dates dans les messages de fédération SAML. Cela permet d'éviter le rejet des messages lorsque le serveur partenaire n'est pas tout à fait synchrone (par défaut, on décale de 5 minutes dans le passé). Ce délai est aussi pris en compte pour la validation des messages reçus ;

  • Utiliser l'authentification SSO pour l'EAD est à oui par défaut. Le passer à non permet de ne plus utiliser le serveur SSO pour l'authentification de l'EAD.

Configuration d'authentification OpenID Connect

  • Autoriser l'authentification OpenID Connect est à non par défaut

    Si ce paramètre est à oui, il devient possible de configurer un ou plusieurs fournisseurs d'identité OpenID Connect ;

  • Référence du fournisseur d'identité OpenID : renseigner un libellé pour identifier le fournisseur. Ce libellé est interne à l'application EoleSSO. Il est utilisé pour définir le nom des fichiers contenant les logos/boutons du fournisseur :

    • /usr/share/sso/interface/images/<libelle>.png : bouton de connexion présenté sur la page de login (par exemple : "se connecter avec France Connect") ;
    • /usr/share/sso/interface/images/logo-<libelle>.png : logo du fournisseur qui sera affiché sur la page d'association de comptes.
  • Libellé du fournisseur d'identité OpenID : libellé à destination des utilisateurs pour décrire le fournisseur ("France Connect", "Google", ...) ;

  • URL d'accès (issuer) : URL décrivant le fournisseur d'identité (la plupart du temps, l'URL de base de son service d'authentification) ;

  • URL de demande d'autorisation (authorization endpoint) : URL permettant au client d'initier le processus d'authentification ;

  • URL de récupération de jeton d'accès (token endpoint) : URL permettant de récupérer un jeton (éventuellement l'identifiant de l'utilisateur) après authentification ;

  • URL de déconnexion (logout endpoint) : URL permettant de demander une déconnexion. Ce paramètre est ignoré pour les fournisseurs utilisant une cinématique de déconnexion spécifique comme Google, Facebook et Microsoft ;

  • URL de lecture des informations (userinfo endpoint) : URL permettant de récupérer les informations de l'utilisateur à l'aide du jeton fourni ;

  • URL de description des certificats de signature (jwks URI) : URL décrivant les certificats utilisés par le fournisseur (si disponible) ;

Définition de l'identifiant client (Client ID) et clé secrète (Client secret)
Attention

L'identifiant client (Client ID) et la clé privée secrète ( Client secret) renvoyés par le fournisseur d'identité utilisés pour valider les échanges doivent être, pour des raisons de sécurité, stockés dans un fichier à part avec des droits restreints.

Pour chaque fournisseur d'identité, ajouter une ligne dans le fichier /etc/eole/eolesso_openid.conf :

<nom_fournisseur> = "<client id> :<client secret>"

Le nom_fournisseur doit correspondre au paramètre Référence du fournisseur d'identité OpenID renseigné dans l'interface de configuration du module.

Si ces informations ne sont pas renseignées pour l'un des fournisseurs déclarés, un message l'indiquera au lancement de la commande diagnose.