CAS

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

La 7.2 n'échappe malheureusement pas à cette règle.

Problème rencontré avec la persistance du cookie TGC (remember-me)

Nous avons constaté un changement de comportement concernant le cookie TGC (Ticket Granting Cookie), responsable du maintien de la session CAS entre le navigateur et le serveur.

En version 7.0, l’interface HTML proposait une case à cocher (<input type="checkbox">) pour l’option "Se souvenir de moi" (remember-me). Cela avait pour effet que, si l’utilisateur ne cochait pas cette case, aucun paramètre rememberme n’était transmis à CAS, et donc la session CAS était associée à un cookie de session navigateur (supprimé à la fermeture du navigateur).

À partir de la version 7.1, l’UI CAS a été modifiée : la case à cocher a été remplacée par un bouton de type "switch" (toggle), qui agit en réalité sur un champ caché (<input type="hidden" name="rememberme">). Résultat : le paramètre rememberme est toujours transmis côté serveur, même lorsqu’il est désactivé.

Or, dans le code de CAS (de la 7.1 à 7.2.2 comprise), la décision de rendre le TGC persistant repose uniquement sur la présence du paramètre rememberme, sans considération de sa valeur. Cela a pour effet de rendre le TGC persistant (cookie à durée de vie fixée), même lorsque l’utilisateur n’a pas demandé à rester connecté. Ce comportement peut poser problème dans des environnements où le navigateur est partagé (ex. : tablettes pour examens), car la session persiste même après fermeture/reprise du navigateur.

Nous avons corrigé ce comportement localement en surchargeant la méthode concernée pour que la persistance du TGC soit conditionnée à la valeur du paramètre rememberme, et non à sa seule présence.

Pull Request

Un pull request a été proposée à Apereo pour corriger cela de manière générique ici : https://github.com/apereo/cas/pull/6872

Modification dans le cas-overlay

Le déploiement par cas-overlay permet de surcharger des classes java.

Exceptionnellement et dans l'attente (et l'espoir) que le problème soit prise en compte et corrigé dans la version officielle d'Apereo CAS, nous avons donc patché localement la classe java.

  1. copie de classe java modifiée dans l'overlay dans src/main/java/org/apereo/cas/web/support/gen/CookieRetrievingCookieGenerator.java
  2. ajout des dépendances dans l'overlay pour la compilation :
    Bloc de code
    languagetext
    /* pour override de CookieRetrievingCookieGenerator */
    implementation "org.apereo.cas:cas-server-core-cookie-api"
    implementation "org.apereo.cas:cas-server-core-authentication-api"
    implementation "org.apereo.cas:cas-server-core-util-api"
    implementation "org.apereo.cas:cas-server-core-web-api"
  3. puis redéploiement et redémarrage pour prise en compte.