Projet

Général

Profil

Development #65475

idp_oidc: ajouter les paramètres iss et sid permettant éventuellement un logout sans cookie de session

Ajouté par Benjamin Dauvergne il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
19 mai 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Ce n'est pas garanti mais ça le rend possible.


Fichiers

Révisions associées

Révision 8f1ea08a (diff)
Ajouté par Benjamin Dauvergne il y a presque 2 ans

idp_oidc: add iss and sid parameter to frontchannel_logout_uri (#65475)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Assigné à mis à Benjamin Dauvergne
#2

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

#3

Mis à jour par Thomas Noël il y a presque 2 ans

Pour référence, la spec de ces paramètres c'est semble-t-il https://openid.net/specs/openid-connect-frontchannel-1_0.html#RPLogout

Si je comprends, c'est quelque chose qui permettrait de parfois lutter contre les pépins de cookies tiers (qui sont bien difficiles à passer dans un iframe en 2022, sinon impossibles) ?

Ma relecture :
  • Dans le test, tu pourrais aller un poil plus loin et tester ce qui est envoyé dans iss (au lieu de juste tester la présence « assert '&iss=' in iframes.attr('src') »)
  • Je n'ai pas trop compris pourquoi tu supprimes iss et sid dans les enregistrements des oidc_sessions : parce que tu es sûr que ça sert à rien ?

En fait, comme ces deux iss et sid étaient déjà dans oidc_session, pourquoi ne pas avoir juste construit l'URL dans apps.py Plugin::logout_list ? (y'a peut-être une raison que j'ai pas vue)

#4

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

Thomas Noël a écrit :

Pour référence, la spec de ces paramètres c'est semble-t-il https://openid.net/specs/openid-connect-frontchannel-1_0.html#RPLogout

Si je comprends, c'est quelque chose qui permettrait de parfois lutter contre les pépins de cookies tiers (qui sont bien difficiles à passer dans un iframe en 2022, sinon impossibles) ?

Ma relecture :
  • Dans le test, tu pourrais aller un poil plus loin et tester ce qui est envoyé dans iss (au lieu de juste tester la présence « assert '&iss=' in iframes.attr('src') »)

Ok.

  • Je n'ai pas trop compris pourquoi tu supprimes iss et sid dans les enregistrements des oidc_sessions : parce que tu es sûr que ça sert à rien ?

Parce que ça ne sert à rien de les stocker, clairement je n'avais pas fini ce code quand je l'ai poussé, ils sont présent dans l'URL qui est stockée à coté et régénérable à la volée de toute façon car dépendant uniquement du domaine et du numéro de la session. Je pense me souvenir vaguement que c'était pour Strasbourg qui n'avait pas besoin du sid juste qu'on ouvre une URL dans une iframe (mais qui doit avoir le même souci maintenant).

En fait, comme ces deux iss et sid étaient déjà dans oidc_session, pourquoi ne pas avoir juste construit l'URL dans apps.py Plugin::logout_list ? (y'a peut-être une raison que j'ai pas vue)

Je ne sais plus, on pourrait vraisemblablement tout faire à la volée sans rien stocker en session en se basant sur les objets OIDCAccessToken qui référencent les OIDCService pour lesquels ont a eu une interaction dans la session en cours. Là mon objectif c'était juste d'avoir des données suffisantes pour dire aux gens "il y a une solution sans cookie de session, vous pouvez la gérer ou arrêter de vous plaindre'. Ici le sid est servi au login dans l'id_token, ils n'ont qu'à le stocker avec l'issuer dans une table à trois colonne "session_id,iss,sid" et sur réception d'un appel fermer la session correspondante, sans même regarder le cookie en cours.

#6

Mis à jour par Thomas Noël il y a presque 2 ans

  • Statut changé de Solution proposée à Solution validée

En tout cas c'est cool, parce que les cookies, on peut pas toujours les envoyer (cf #53387)

#7

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

Thomas Noël a écrit :

En tout cas c'est cool, parce que les cookies, on peut pas toujours les envoyer (cf #53387)

Oui c'est bien en voyant ce ticket que je me suis dit que je pouvais faire ce petit ajustement.

#8

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 8f1ea08a6274659f1777326cc7deb32efb5b4daa
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Thu May 19 22:04:25 2022 +0200

    idp_oidc: add iss and sid parameter to frontchannel_logout_uri (#65475)
#9

Mis à jour par Transition automatique il y a presque 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#10

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF