# Serveur CAS

## Présentation

LL::NG can act as an CAS server, that can allow one to federate LL::NG with:

- Un autre système LL::NG configuré avec authentification CAS
- N'importe quel client CAS

LL::NG est compatible avec le protocole CAS versions 1.0, 2.0 et en partie 3.0 (echange d'attributs).

## Configuration

Dans le manager, aller dans `Paramètres généraux` > `Modules fournisseurs` et configurer :

- Activation : mettre à `Activé`.
- Chemin : laisser `^/cas/` sauf si le fichier de configuration Apache du portail a été modifiée.
- Règle d'utilisation : une règle pour autoriser l'usage de ce module, mettre 1 pour toujours l'autoriser.

Par exemple, pour n'autoriser que les utilisateurs authentifiés fortement :

    $authenticationLevel > 2

Le module Rewrite d'Apache doit être activé dans la configuration Apache du portail ou dans la configuration du portail Nginx.

Aller ensuite dans `Options` pour définir :

- Identifiant CAS : la clef de session à utiliser pour compléter le login (valeur transmise au clients CAS).
- Attributs CAS : liste des attributs qui seront transmis dans les réponses validées. Les clefs sont les noms des attributs de la réponse CAS, et les valeurs les noms des clefs de session.
- Politique de contrôle d'accès : definit si le contrôle d'accès doit être fait sur le service CAS. Trois options :
  - none : pas de contrôle d'accès, le serveur répond sans contrôler si l'utilisateur est autorisé à accéder au service (c'est la valeur par défaut)
  - error : si l'utilisateur n'a pas accès, une erreur est affichée sur le portail, l'utilisateur n'est pas redirigé vers le service CAS
  - faketicket : si l'utilisateur n'a pas accès, un faux ticket est construit, et l'utilisateur est redirigé vers le service CAS. Ainsi le service CAS doit afficher une erreur lorsque la validation du ticket échoue.
- Nom et options du module session CAS : choisir un module spécifique pour ne pas mêler les sessions CAS et les sessions normales (voir pourquoi).

Si le `login CAS` n'est pas défini, la donnée `Paramètres généraux` » `Journalisation` » `REMOTE_USER` est utilisée, mise à `uid` par défaut