Project

General

Profile

Development #71868

disparition des portées de téléphone et d’adresse postale

Added by Paul Marillonnet 2 months ago. Updated about 1 month ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
30 November 2022
Due date:
% Done:

0%

Estimated time:
Hors marché:
No
Patch proposed:
Yes
Planning:
No

Description

Au détour d’une tentative de débogage d’un FS en production avec le support technique FranceConnect, on apprend que les scopes phone et address n’existent plus.
Ils n’apparaissent plus dans la documentation technique : https://partenaires.franceconnect.gouv.fr/fcp/fournisseur-service


Files

Associated revisions

Revision d62d2320 (diff)
Added by Paul Marillonnet 2 months ago

auth_fc: discard deprecated scopes (#71868)

History

#1

Updated by Paul Marillonnet 2 months ago

  • Status changed from Nouveau to En cours
  • Assignee set to Paul Marillonnet

Juste les virer de notre côté, il n’y a pas de support legacy de ces scopes par FC, juste si on les demandait dans certains raccordements alors ça a du casser silencieusement de notre côté.

#3

Updated by Paul Marillonnet 2 months ago

Pas besoin d’écrire une migration, ces scopes obsolètes sont juste ignorées par FC (l’équipe support nous apprend cette obsolescence en regardant les logs au détour d’une demande qui n’a rien à voir), juste elles seront virées au fur et à mesure qu’on édite les authentificateurs dans le backoffice.

Peut-être qu’en parallèle de ça on peut faire un tour des prods voir où ces scopes existent encore, pour signaler aux CPFs que depuis quelques semaines/mois elles ne correspondent plus à rien côté FC ?

#4

Updated by Benjamin Dauvergne 2 months ago

Paul Marillonnet a écrit :

Peut-être qu’en parallèle de ça on peut faire un tour des prods voir où ces scopes existent encore, pour signaler aux CPFs que depuis quelques semaines/mois elles ne correspondent plus à rien côté FC ?

Ils n'étaient de toute façon pas fournis ou pas fournis par un idp sur deux (Ameli/Impots) donc je ne pense pas qu'ils aient été utilisé quelque part, on a une gestion particulière dans authentic2-cut qu'on pourra virer.

#5

Updated by Paul Marillonnet 2 months ago

Benjamin Dauvergne a écrit :

Ils n'étaient de toute façon pas fournis ou pas fournis par un idp sur deux (Ameli/Impots) donc je ne pense pas qu'ils aient été utilisé quelque part, on a une gestion particulière dans authentic2-cut qu'on pourra virer.

Ok, comme tu le sens, je me disais qu’on peut tourner quelque chose du genre :

import logging

from authentic2_auth_fc.models import FcAuthenticator

logger = logging.getLogger(__name__)

try:
    fc_authn = FcAuthenticator.objects.get()
except FcAuthenticator.DoesNotExist:
    pass
else:
    for deprecated_scope in ('phone', 'address'):
        if deprecated_scope in fc_authn.scopes:
            logger.warning(f'FcAuthenticator declares deprecated scope {deprecated_scope}.\n')

et informer les éventuel·les CPFs concerné·es de vérifier que rien n’a cassé silencieusement sur les instances en question.
Mais si c’est utilisé nulle part, passons.

#6

Updated by Benjamin Dauvergne 2 months ago

J'ajouterai ça au cas où ça devienne un bug d'envoyer un scope inconnu (comme ça où en faisant une intersection explicite avec la liste des scopes acceptés):

diff --git a/src/authentic2_auth_fc/views.py b/src/authentic2_auth_fc/views.py
index e9755a08..b2bd09a1 100644
--- a/src/authentic2_auth_fc/views.py
+++ b/src/authentic2_auth_fc/views.py
@@ -259,7 +259,9 @@ class LoginOrLinkView(View):
         return state, next_url

     def make_authorization_request(self, request):
-        scope = ' '.join(set(['openid'] + self.authenticator.scopes))
+        scopes = set(['openid'] + self.authenticator.scopes)
+        scopes -= {'phone', 'address'}
+        scope = ' '.join(scopes)

         nonce_seed, nonce, state = hash_chain(3)
#7

Updated by Benjamin Dauvergne 2 months ago

  • Status changed from Solution proposée to Solution validée
#8

Updated by Paul Marillonnet 2 months ago

Benjamin Dauvergne a écrit :

J'ajouterai ça au cas où ça devienne un bug d'envoyer un scope inconnu (comme ça où en faisant une intersection explicite avec la liste des scopes acceptés):

Ok, j’ose espérer qu’on serait prévenu en amont d’un tel changement de comportement de FC :)
J’ai mis à jour la branche l’option B à savoir l’intersection avec les scopes acceptés :

diff --git a/src/authentic2_auth_fc/views.py b/src/authentic2_auth_fc/views.py
index e9755a086..daca3b822 100644
--- a/src/authentic2_auth_fc/views.py
+++ b/src/authentic2_auth_fc/views.py
@@ -259,7 +259,10 @@ class LoginOrLinkView(View):
         return state, next_url

     def make_authorization_request(self, request):
-        scope = ' '.join(set(['openid'] + self.authenticator.scopes))
+        supported_scopes = {key for key, _ in models.SCOPE_CHOICES}
+        scopes = set(self.authenticator.scopes).intersection(supported_scopes)
+        scopes.add('openid')  # mandatory hence not appearing in FC authenticator list
+        scope = ' '.join(scopes)

         nonce_seed, nonce, state = hash_chain(3)

Si c’est bon pour toi je pousse.

#9

Updated by Benjamin Dauvergne 2 months ago

Ok.

#10

Updated by Paul Marillonnet 2 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit d62d23203fff4ee441665ab3eb869040143c449b
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Nov 30 11:15:12 2022 +0100

    auth_fc: discard deprecated scopes (#71868)
#12

Updated by Paul Marillonnet 2 months ago

Benjamin Dauvergne a écrit :

[…] on a une gestion particulière dans authentic2-cut qu'on pourra virer.

C’est #71900, patch proposé, si tu veux jeter un œil, qu’on passe tout dans ce cycle.

#14

Updated by Transition automatique about 1 month ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF