2 Integration officielle
az4aaz edited this page 2026-10-24 11:48:51 +02:00

Intégration officielle

Cette page s'adresse à la DISI, si l'école envisage de reprendre PAFF comme outil officiel. Elle dit comment l'outil fonctionne aujourd'hui, ce qui change s'il passe derrière le SSO de l'école, et ce qu'il faudrait décider de votre côté. Rien de tout ça n'est figé : c'est une base de discussion.

Aujourd'hui

PAFF n'a aucun accès institutionnel. Pour afficher son planning ou ses notes, un étudiant se connecte avec son compte IMT, et PAFF ouvre en son nom les mêmes sessions que son navigateur : PASS (via le CAS et l'IdP), Moodle, et le tableau de bord du hub. Le mot de passe ne sert qu'à ce moment-là, il n'est ni stocké ni écrit dans les journaux. PAFF garde en revanche les cookies de session obtenus, le temps que la session vive.

Ça marche, mais ce n'est pas un modèle acceptable pour un outil d'école : un service tiers voit passer des mots de passe, et toutes les requêtes partent des comptes des étudiants. C'est la première chose qu'une intégration officielle doit faire disparaître.

L'authentification

D'après ce qu'on peut observer de l'extérieur, l'école a une chaîne SSO classique :

  • un IdP Shibboleth, https://idp.imt-atlantique.fr/idp/shibboleth, en SAML 2.0 (et 1.1) ;
  • le CAS, cas.imt-atlantique.fr, qui authentifie derrière l'IdP ;
  • le WAYF de l'IMT pour les services partagés entre écoles.

Le plus simple est de déclarer PAFF comme fournisseur de service SAML auprès de l'IdP, comme Moodle ou le hub. Côté serveur, un Shibboleth SP (Apache mod_shib, par exemple) devant PAFF s'occupe du protocole, et transmet à l'application l'identité de la personne connectée. PAFF n'a alors plus jamais de formulaire de connexion à lui.

Si vous préférez un client CAS direct ou de l'OpenID Connect, c'est faisable aussi, je n'ai simplement pas pu vérifier depuis l'extérieur ce que votre CAS expose.

Attributs utiles :

Attribut Pourquoi
identifiant de connexion (uid ou eduPersonPrincipalName) savoir qui est connecté
mail retrouver la personne dans l'annuaire PASS
affiliation (eduPersonAffiliation) réserver l'accès aux étudiants, ou l'ouvrir au personnel

Si l'IdP peut aussi transmettre l'identifiant de la personne dans PASS, la correspondance devient directe et le passage par l'annuaire n'est plus utile.

Les données

Se connecter par le SSO règle la question des mots de passe, mais PAFF a toujours besoin de lire l'agenda, les UE et les notes de l'étudiant. Aujourd'hui il les lit dans les pages de PASS, faute de mieux.

Une version officielle devrait passer par un canal que vous choisissez et maîtrisez. Ce qu'il faudrait trancher :

  • L'agenda : le flux iCal personnel existe déjà (export du hub). S'il pouvait être obtenu côté serveur pour la personne connectée, il couvrirait l'essentiel du planning.
  • Les UE et les crédits : le hub les connaît (resultat_ue). Un accès serveur à cette API, limité à la personne connectée, remplacerait la lecture du catalogue et des pages de PASS.
  • Les notes : elles viennent du relevé de PASS. À voir si vous préférez ne pas les exposer du tout dans un premier temps.
  • Les détails de séance (salle, intervenant, inscrits) : utiles pour les feuilles d'émargement, à cadrer selon ce que vous jugez raisonnable.
  • Moodle : seulement pour les liens vers les cours et les fiches d'émargement déposées. Optionnel.

Pour chaque source, la règle de base serait la même : PAFF ne lit que les données de la personne connectée, avec des droits que vous définissez, et rien n'est demandé en masse.

Hébergement et données personnelles

  • PAFF tient dans un conteneur, avec un Redis pour les sessions et le cache, et un convertisseur de documents pour les feuilles d'émargement. Le dépôt décrit l'installation (Auto-hébergement).
  • Hébergé chez vous, le traitement entre dans votre registre et sous votre DPO, ce qui n'est pas le cas aujourd'hui.
  • Le cache peut être réduit au strict nécessaire : PAFF n'a pas besoin de garder quoi que ce soit au-delà de la session une fois les données servies par un canal officiel.
  • Le code est sous licence AGPL. Une version modifiée et mise à disposition des étudiants doit publier ses sources ; on peut en discuter si c'est un frein.

Étapes possibles

  1. Se mettre d'accord sur le périmètre : émargement seul, ou tout l'outil.
  2. Déclarer PAFF comme fournisseur de service SAML, avec les attributs ci-dessus.
  3. Choisir, pour chaque source de données, le canal autorisé.
  4. Adapter PAFF à ces canaux et retirer la connexion par mot de passe.
  5. Déployer chez vous, d'abord pour un groupe test.

Je peux accompagner chacune de ces étapes et adapter le code une fois les choix faits.