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
Files
Associated revisions
History
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é.
Updated by Paul Marillonnet 2 months ago
- File 0001-auth_fc-discard-deprecated-scopes-71868.patch 0001-auth_fc-discard-deprecated-scopes-71868.patch added
- Status changed from En cours to Solution proposée
- Patch proposed changed from No to Yes
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 ?
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.
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.
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)
Updated by Benjamin Dauvergne 2 months ago
- Status changed from Solution proposée to Solution validée
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.
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)
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.
Updated by Transition automatique about 1 month ago
- Status changed from Résolu (à déployer) to Solution déployée
auth_fc: discard deprecated scopes (#71868)