# Configuration de l'authentification CAS *Cette page s'adresse aux administrateurs système en charge de ScoDoc.* Le CAS, *Central Authentication Service* CAS est un système d'authentification unique (SSO) très utilisé dans les universités. Il permet à l'utilisateur de s'identifier sur un site unique (souvent appelé "ENT" en raccourci), pour ensuite accéder aux différents services. Il évite de s'authentifier à chaque fois qu'on accède à une application en mettant en place un système de ticket. Notons que le CAS peut introduire des faiblesses dans l'application: - indisponibilité ou lenteur du service; - vulnérabilité si le serveur CAS (ou l'annuaire sur lequel il s'appuie) venait à être piraté. Il est donc conseillé de s'assurer du bon fonctionnement et de la sécurisation de son service CAS avant d'aller plus loin. ## Comptes utilisateurs ScoDoc et CAS Rappel: voir [Gestion des utilisateurs](AdminUsers.md) Pour simplifier, l'utilisateur va partir de ScoDoc, passer par le site CAS (redirection), puis revenir si l'authentification réussi, avec un jeton et un identifiant CAS. À ce moment, ScoDoc cherche s'il a un utilisateur ayant l'identifiant donné, dans le champ `cas_id`de sa base utilisateur. Si oui, il ouvre une session pour cet utilisateur, avec ses rôles et permissions. ## Paramètres spécifiques pour le CAS ### Configuration générale Les pages de configuration générale de ScoDoc sont accessibles via la page d'accueil, uniquement lorsqu'on est connecté comme super-admin. ![accès au panneau de config](fig/config-accueil.png) De cette page, on accède à la page consacrée au CAS: ![config du CAS](fig/config-cas.png) Page sur laquelle on va pouvoir spécifier: - si on active le CAS (ce qui permet aussi de le désactiver globalement); - si on force son utilisation; - l'URL complète du serveur CAS (exemple: `https://mon.serveur.cas.fr:1234/cas/`); - un attribut pour l'identification (laisser vide normalement); - si on veut vérifier le certificat SSL (normalement oui, par sécurité, et fournir le fichier certificat PEM dans le champ suivant). Si l'option **Forcer l'utilisation du CAS** est activée, l'utilisateur qui tente de se connecter sera immédiatement redirigé vers la page du CAS. Sinon, il aura le choix via le formulaire classique, avec un lien en plus: ![login scodoc avec CAS](fig/config-cas-cnx.png) 🚸 Attention, le lien de réinitialisation du mot de passe ne concerne évidemment pas le mot de passe du CAS, mais celui de ScoDoc. C'est ennuyeux. À ce stade, CAS est utilisable, mais on n'a aucun utilisateur reconnu ! ### Configuration des utilisateurs ScoDoc doit connaitre l'identifiant CAS de ses utilisateurs. A défaut d'un annuaire, il va falloir saisir ces identifiants pour chaque compte. On peut le faire via le formulaire habituel de paramétrage du compte utilisateur, ou bien par import Excel. Cette configuration n'est accessible qu'au super-admin. ![form. config. utilisateur](fig/config-cas-user.png) Ici trois champs nous intéressent: - **Identifiant CAS**: nécessaire - **Autorise connexion via CAS**: spécifie si ce compte peut ou non se connecter via CAS. - **Autorise connexion via ScoDoc**: spécifie si cet utilisateur peut se connecter via ScoDoc, sans CAS, lorsque le CAS est activé. Ceci est nécessaire par exemple pour des comptes utilisés pour l'API, ou bien pour des personnes extérieures à l'établissement et qui ne seraient pas (encore) dans le CAS. En cas de besoin, les comptes "super-admin" peuvent toujours se connecter à ScoDoc sans CAS: si le forçage est activé, il leur faut passer par une adresse spéciale: ```text https://votre.serveur.scodoc.fr/auth/login_scodoc ``` (remplacer `https://votre.serveur.scodoc.fr` par le début de l'adresse de votre serveur). 🚸 **Attention**: en général, les **clients d'API** (et notamment la "passerelle") n'utilisent pas le CAS: si vous forcez les utilisateurs à utiliser le CAS, pensez à autoriser les comptes de l'API à se connecter sur ScoDoc sans CAS. ### Règles de connexion Résumé pour s'y retrouver dans les paramètres: - Au niveau de la config globale de ScoDoc: - CAS peut être *activé* ou non. - S'il est activé, il peut être *forcé* ou non. - Au niveau de chaque compte utilisateur: - on a (ou non) un "Identifiant CAS" (`cas_id`); - on autorise ou non la connexion via CAS (`cas_allow_login`) - on autorise ou non la connexion via l'identifiant ScoDoc quand CAS est activé (`cas_allow_scodoc_login`) L'utilisateur pourra se connecter **via un identifiant ScoDoc** (rappel: *c'est nécessaire pour les comptes API*), si et seulement si: - CAS non activé - ou compte super-admin - ou `cas_allow_scodoc_login` et pas (`cas_id` renseigné et `cas_allow_login` et CAS forcé) (donc si il a `cas_allow_scodoc_login` mais pas de `cas_id`, il pourra se connecter via ScoDoc même si on a *forcé* le CAS). L'utilisateur pourra se connecter **en CAS** si et seulement si: - CAS activé et `cas_id` renseigné (ou règle de config. automatique) ## Sécurité: permissions et informations L'utilisateur connecté via CAS a exactement les mêmes permissions que s'il s'était connecté via ScoDoc. ### Permission Le paramétrage CAS au niveau général nécessite la permission `Super Administrateur`. Il est naturel de déléguer la création des comptes utilisateurs ScoDoc aux responsables de département ou à leur représentant. Toutefois, le réglage CAS pourrait créer des problèmes de sécurité (par exemple affecter à un département un utilisateur CAS qui n'en fait pas réellement partie). Le CAS ajoute une permission ScoDoc `ScoUsersChangeCASId` qui contrôle la possibilité de changer l'identifiant CAS d'un compte. Cette permission peut ou non être associée au rôle `Admin` d'un département, selon la politique de l'établissement. Les réglages par compte **Autorise connexion via CAS** et **Autorise connexion via ScoDoc** sont réservés au `Super Administrateur`. ### Informations sur un utilisateur Le super-administrateur (et elle seule) peut visualiser les dates de: - dernière utilisation (date du dernier chargement de page); - dernière connexion (login) via CAS. dans les tables d'utilisateurs et sur la page de chaque compte: ![Informations sur un utilisateur](fig/config-user-view.png) ### Logs Les connexions et tentatives de connexions via CAS sont logguées au niveau `INFO`, qui arrive par défaut dans `/opt/scodoc-data/scodoc.log`. Exemples: - Connexion réussie: ```text INFO: CAS: login user_name ``` - Tentative de connexion CAS réussie mais utilisateur non reconnu par ScoDoc: ```text INFO: CAS login denied for cas_id=prenom.nom (unknown or inactive) ``` ## Accès via l'API L'authentification des clients de l'API utilise un jeton (*token*), qui est demandé par l'appel `/ScoDoc/api/tokens` (qui lui même appelle `User.get_token()`). Ce mécanisme ne passe jamais par le CAS, à condition que le compte utilisateur utilisé par l'API soit "*Autorisé à se connecter via ScoDoc*", et pas autorisé à utiliser le CAS (`cas_allow_login` faux). (voir le formulaire plus haut, [configuration des utilisateurs](#configuration-des-utilisateurs)) !!! note "Voir aussi" - [Gestion des utilisateurs](AdminUsers.md) - [Rôles et permissions](ConfigPermissionsDept.md) - [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role) - [Guide administrateur ScoDoc](GuideAdminSys.md) - [API pour ScoDoc 9](ScoDoc9API.md) - [FAQ](FAQ.md) - [Contacts](Contact.md)