Arborescence des pages

Explication du problème

  • l'application crée une session et stocke l'information avant de rediriger vers CAS
  • l'application redirige vers CAS qui demande le mot de passe
  • CAS redirige vers l'application
  • l'utilisateur clique sur le bouton "back"
  • le login CAS se fait sans intervention utilisateur, la page affiche à nouveau l'application. Dans certains cas l'application refuse le ticket qu'il n'attend pas[*]. Et même si cela ne fait pas d'erreur, le "back" n'a rien fait et l'utilisateur se demande bien pourquoi.

Solution

  • sur la mire CAS (formulaire demandant le login & mot de passe), ajouter au <form> :
onsubmit="ignore_on_history_back()"

et dans la page :

function ignore_on_history_back() {
  // on back, do not autolog nor prompt, go back to the app
  try { window.history.replaceState({}, null, location.href.replace('/cas/login', '/cas/authentification-en-cours.html')) } catch (e) {}
}
  • créer une page statique

authentification-en-cours.html
<script>
 var isForward = (history.state || {}).isForward;
 try {
   history.replaceState({ isForward: !isForward }, null, null);
 } catch (e) {}
 history.go(isForward ? 1 : -1);
</script>
Page temporaire d'authentification. Nous vous redirigeons vers la page précédente... 

(cf https://cas.univ-paris1.fr/cas/authentification-en-cours.html)


[*] we have this issue with shibboleth-idp that is configured to delegate to CAS




  • Aucune étiquette