Project

General

Profile

Support #40175

bookmark de page de connexion avec ?nonce= dedans

Added by Frédéric Péters 5 months ago. Updated 5 months ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
25 Feb 2020
Due date:
% Done:

0%

Patch proposed:
No
Planning:
No

Description

Je vais sur le portail agent, il me redirige vers <authentic>/login/?nonce=_51678...&service=portal-agent...&next=/idp/saml2/continue%3Fnonce%3D_51678..., je mets cette adresse en bookmark.

J'utilise mon bookmark une semaine plus tard, ça échoue avec un message "request has expired", le nonce étant expiré.

~~

On pourrait détecter à l'affichage de la page de connexion que le nonce est expiré et le zapper et il faudrait aussi zapper le ?next=, mais résultat l'agent pourra se connecter mais il sera envoyé sur le portail usager. (déjà mieux qu'avoir le "request has expired).

Plus loin, on pourrait aussi profiter de service=portail-agent dans la query string, pour savoir qu'après authentification il faut lancer un SSO initié par l'IdP vers le service en question. (pour les services/protocoles où un SSO initié par l'IdP est possible).

History

#1 Updated by Benjamin Dauvergne 5 months ago

Pour l'instant il faut juste ne pas bookmarker cette page... actuellement on a aucun moyen de savoir si un nonce est expiré les nonces n'existant pas en base; si jamais on avait ça il faudrait déterminer une URL de retour dépendante du service plutôt qu'une URL unique et directement renvoyer vers le service (et différencier le service du service BO encore plus chiant) en question plutôt que l'URL de retour par défaut qui est le portail usager.

Une possibilité plus simple ce serait de laisser la personne se connecter mais de déterminer l'URL de retour basée sur son OU, pour rediriger les agents vers le portail agent.

#2 Updated by Frédéric Péters 5 months ago

si un nonce est expiré les nonces n'existant pas en base

En l'espèce, ils sont bien en base.

        messages.warning(request, _('request has expired'))
→
        login_dump, consent_obtained, nid_format = get_and_delete_key_values(nonce)
→
        kv = KeyValue.objects.get(key=key)

#3 Updated by Benjamin Dauvergne 5 months ago

Frédéric Péters a écrit :

si un nonce est expiré les nonces n'existant pas en base

En l'espèce, ils sont bien en base.

[...]

Oui mais non c'est spécifique.

#4 Updated by Frédéric Péters 5 months ago

Ok mais ça a du sens alors de ramener/limiter le ticket à la situation commune SAML, où :

  • on sait que les nonces sont en base
  • on peut faire un SSO initié par l'IdP vers ce qui sera trouvé en query string (service=portal-agent)

?

Also available in: Atom PDF