Projet

Général

Profil

Tâche #14106

Scénario #14102: Suite de l'implémentation d'OpenID / France Connect dans EoleSSO

Définir / implémenter la notion de déconnexion lors d'une authentification faite via OpenID Connect

Ajouté par Bruno Boiget il y a plus de 8 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
19/11/2015
Echéance:
% réalisé:

100%

Temps estimé:
8.00 h
Temps passé:
Restant à faire (heures):
0.0

Description

2 aspects sont à considérer pour la déconnexion :

  • fermeture de la session EoleSSO en cas de déconnexion de la session OpenID
  • fermeture de la session OpenID en cas de déconnexion de la sessino EoleSSO
    • avec demande à l'utilisateur ?
    • option activable au niveau de gen_config, ou à considérer comme une préférence utilisateur ?

Demandes liées

Lié à EoleSSO - Tâche #13853: Etudier les possiblités de déconnexion après connexion via France Connect. Fermé 02/11/2015

Révisions associées

Révision 3320d907 (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Suite de la gestion du logout

  • correction de l'enregistrement de l'association avec l'utilisateur local
  • implémentation du suivi des déconnexions en cours pour OpenID

ref #14106 @4h

Révision e6742d10 (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Correction de la déconnexion avec France Connect

  • stockage du paramètre id_token reçu à la connexion
  • envoi en tant que 'id_token_hint' à la déconnexion

ref #14106 @4h

Révision c01f9128 (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Permière version fonctionnelle gérant la déconnexion

  • stockage des id_token/access_token pour les transmettre au logout
  • confirmation/déconnexion spécifique pour certains providers (google, ...)

ref #14106

Révision c1322fe6 (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Suite de la gestion du logout

  • correction de l'enregistrement de l'association avec l'utilisateur local
  • implémentation du suivi des déconnexions en cours pour OpenID

ref #14106 @4h

Révision a61f2503 (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Correction de la déconnexion avec France Connect

  • stockage du paramètre id_token reçu à la connexion
  • envoi en tant que 'id_token_hint' à la déconnexion

ref #14106 @4h

Révision 95f0f841 (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Permière version fonctionnelle gérant la déconnexion

  • stockage des id_token/access_token pour les transmettre au logout
  • confirmation/déconnexion spécifique pour certains providers (google, ...)

ref #14106

Révision f961909d (diff)
Ajouté par Bruno Boiget il y a environ 8 ans

Ajout de traductions supplémentaire + fichier manquant

ref #14106 @30m

Historique

#1 Mis à jour par Bruno Boiget il y a environ 8 ans

  • Statut changé de Nouveau à En cours

#2 Mis à jour par Bruno Boiget il y a environ 8 ans

  • Assigné à mis à Bruno Boiget
  • Restant à faire (heures) changé de 8.0 à 4.0

#3 Mis à jour par Bruno Boiget il y a environ 8 ans

  • Statut changé de En cours à Nouveau
  • Assigné à Bruno Boiget supprimé
  • % réalisé changé de 0 à 80
  • Restant à faire (heures) changé de 4.0 à 2.0

#4 Mis à jour par Bruno Boiget il y a environ 8 ans

La chaîne de déconnexion est fonctionnelle, mais le paramêtre 'id_token_hint' fourni à la déconnexion ne semble pas convenir à France Connect.

A première vue, le token passé contient un paramêtre 'aud': [u'cd7de882541d7fc760fd888bd29b985c577ec98a42b764ca0e03d8a4caf44262'] qui correspond au client_id déclaré, mais la déconnexion échoue avec ce message :

client cd7de882541d7fc760fd888bd29b985c577ec98a42b764ca0e03d8a4caf44262 does not exist

En remplaçant dans l'url utilisée la valeur de id_token_hint par le token renvoyé par France Connect lors de l'authentification, la déconnexion semble se dérouler correctement.

Ce paramêtre initial ne peut pas être intercepté par EoleSSO (appel http en backend effectué par la librairie pyoidc). On pourrait éventuellement dérivé la classe du client fourni pour récupérer et stocker le jeton fourni afin de le rejouer à la déconnexion.

Voir si il n'y a pas des corrections à ce sujet sur des versions plus récentes de la librairie (mais problème de compatibilité avec la librairie python-crypto du système).

Voir aussi comment cela est géré dans la librairie Openid de Django, qui utilise également pyoidc : https://github.com/marcanpilami/django-oidc

#5 Mis à jour par Scrum Master il y a environ 8 ans

  • Statut changé de Nouveau à En cours

#6 Mis à jour par Scrum Master il y a environ 8 ans

  • Assigné à mis à Bruno Boiget

#7 Mis à jour par Scrum Master il y a environ 8 ans

  • Statut changé de En cours à Résolu

#8 Mis à jour par Bruno Boiget il y a environ 8 ans

  • % réalisé changé de 80 à 100
  • Restant à faire (heures) changé de 2.0 à 0.5

Après test de versions plus récentes de la librairie (en utilisant python virtualenv), la déconnexion ne passe toujours pas en générant un 'id_token_hint' au format jwt (en repartant des paramètres de l'id_token initial), et l'authentification demande des corrections supplémentaires (France Connect à l'air de refuser qu'un paramètre 'state' soit passé dans la requête access_token_request, alors que le client l'ajoute automatiquement).

La solution retenue pour l'instant est de garder la version 0.7.6 de pyoidc et de Surcharger la classe Client de pyoidc pour stocker les id_token et access_token reçus à l'authentification.

Revoir la configuration Creole pour les différents cas possibles : cf demande #14108

#9 Mis à jour par Scrum Master il y a environ 8 ans

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) changé de 0.5 à 0.0

Formats disponibles : Atom PDF