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.
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.
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.
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.
Truc & astuce
À partir d'EOLE 2.7.2, le serveur SSO local est est également accessible sur le port HTTPS avec l'URL : https://<nom_du_serveur>/sso
.
Attention
Si le port HTTPS (443
) est déclaré pour ce service, alors celui-ci n’est accessible que via l’URL https://<nom_du_serveur>/sso
.
L’URL de la forme https://<nom_du_serveur>:<port>/
reste valable pour les autres valeurs de port que 443.
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'annuairefichier 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'utilisateurroot
)
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.
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[5] (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.
Authentification OTP
Il est possible de configurer EoleSSO pour gérer l'authentification par clé OTP à travers le protocole securID[6] 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 questionGestion 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[7] 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.
Configuration en mode expert
Autres options
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
etDomaine 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 metaviewport
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éfautSi 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é ;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éfautCe 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 ;
Taille du pool de traitement (thread pool size)
permet de configurer la valeur du paramètre THREAD_POOL_SIZE.Augmenter cette valeur est susceptible de résoudre les problèmes de charge rencontrés sur certaines infrastructures ;
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.
Authentification OpenID Connect
Autoriser l'authentification OpenID Connect
est ànon
par défautSi 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
.