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>
:
Bloc de code |
---|
|
onsubmit="ignore_on_history_back()" |
et dans la page :
Bloc de code |
---|
|
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) {}
} |
Bloc de code |
---|
language | xml |
---|
title | 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