Development #71868
disparition des portées de téléphone et d’adresse postale
0%
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
Fichiers
Révisions associées
Historique
Mis à jour par Paul Marillonnet il y a plus d'un an
- Statut changé de Nouveau à En cours
- Assigné à mis à 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é.
Mis à jour par Paul Marillonnet il y a plus d'un an
- Fichier 0001-auth_fc-discard-deprecated-scopes-71868.patch 0001-auth_fc-discard-deprecated-scopes-71868.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
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 ?
Mis à jour par Benjamin Dauvergne il y a plus d'un an
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.
Mis à jour par Paul Marillonnet il y a plus d'un an
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.
Mis à jour par Benjamin Dauvergne il y a plus d'un an
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)
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Statut changé de Solution proposée à Solution validée
Mis à jour par Paul Marillonnet il y a plus d'un an
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.
Mis à jour par Paul Marillonnet il y a plus d'un an
- Statut changé de Solution validée à 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)
Mis à jour par Paul Marillonnet il y a plus d'un an
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.
Mis à jour par Transition automatique il y a plus d'un an
- Statut changé de Résolu (à déployer) à Solution déployée
auth_fc: discard deprecated scopes (#71868)