2023-03-01 19:05:21 +01:00
|
|
|
# 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.
|
|
|
|
|
2023-03-06 22:25:24 +01:00
|
|
|
Cette configuration n'est accessible qu'au super-admin.
|
2023-03-01 19:05:21 +01:00
|
|
|
|
|
|
|
![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
|
2024-11-12 20:10:53 +01:00
|
|
|
ScoDoc, sans CAS, lorsque le CAS est activé. Ceci est nécessaire par
|
2023-03-01 19:05:21 +01:00
|
|
|
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.
|
|
|
|
|
2024-11-12 20:10:53 +01:00
|
|
|
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:
|
2023-03-01 19:05:21 +01:00
|
|
|
|
|
|
|
```text
|
|
|
|
https://votre.serveur.scodoc.fr/auth/login_scodoc
|
|
|
|
```
|
|
|
|
|
2023-03-06 22:25:24 +01:00
|
|
|
(remplacer `https://votre.serveur.scodoc.fr` par le début de l'adresse de votre serveur).
|
|
|
|
|
2023-03-01 19:05:21 +01:00
|
|
|
🚸 **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.
|
|
|
|
|
2024-11-12 20:10:53 +01:00
|
|
|
### 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)
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-03-06 22:25:24 +01:00
|
|
|
## 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)
|
|
|
|
```
|
2023-03-01 19:05:21 +01:00
|
|
|
|
2023-03-10 11:32:27 +01:00
|
|
|
## 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
|
2024-11-12 20:10:53 +01:00
|
|
|
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))
|
2023-03-10 11:32:27 +01:00
|
|
|
|
|
|
|
|
2023-03-01 19:05:21 +01:00
|
|
|
!!! note "Voir aussi"
|
|
|
|
|
|
|
|
- [Gestion des utilisateurs](AdminUsers.md)
|
2023-03-06 22:25:24 +01:00
|
|
|
- [Rôles et permissions](ConfigPermissionsDept.md)
|
|
|
|
- [Config. des rôles et permissions en ligne de commande](GuideConfig.md#creation-dun-nouveau-role)
|
2023-03-01 19:05:21 +01:00
|
|
|
- [Guide administrateur ScoDoc](GuideAdminSys.md)
|
|
|
|
- [API pour ScoDoc 9](ScoDoc9API.md)
|
|
|
|
- [FAQ](FAQ.md)
|
2023-03-10 11:32:27 +01:00
|
|
|
- [Contacts](Contact.md)
|