Les évolutions de la nouvelle version
La version 2 de FranceConnect apporte un certain nombre d'évolutions ayant pour objectif :
- d'améliorer le niveau de sécurité de FranceConnect et des fournisseurs de service ;
- de mieux se conformer au protocole OpenID Connect ;
- de bénéficier des mécanismes d'OpenID Connect permettant de simplifier l'utilisation de FranceConnect par les fournisseurs de service.
Régularisation du votre habilitation
Certaines évolutions, notamment celles touchant à la sécurité et à la conformité OpenID Connect, sont obligatoires, tandis que d'autres sont optionnelles.
Les évolutions obligatoires pour passer à la version 2 (nouvelle version) de FranceConnect :
- modification des algorithmes de signature ;
- vérification de la signature de la réponse à /api/v2/userinfo ;
- ajout de paramètres obligatoires lors de l'appel à /api/v2/authorize ;
- gestion des erreurs lors du retour de l'usager sur les callback_uri ;
- suppression des scopes address et phone ;
- suppression du claim preferred_username du scope identite_pivot.
Les évolutions pouvant vous simplifier la vie :
- la récupération dynamique des données de configuration de FranceConnect via la discovery url.
Modification des algorithmes de signature #
Dans la version 1 de FranceConnect, la signature des jetons transmis utilise uniquement des algorithmes symétriques basés sur un secret partagé entre le fournisseur de service et FranceConnect. Ce type d'algorithme n'est plus recommandé par l'ANSSI dans le cadre des échanges basés sur le protocole OpenID Connect.
La version 2 de FranceConnect change les algorithmes de signature mis à disposition en se basant sur des algorithmes asymétriques. Une clé privée est utilisée pour signer un jeton et une clé publique permet de valider la signature. Cela nécessite les évolutions suivantes :
- récupérer régulièrement les clés de signature de FranceConnect (Si vous avez un cache, vous devrez en cas d'échec re-tester au lieu d'envoyer une erreur à l'utilisateur) ;
- vérifier la signature des jetons en utilisant les algorithmes asymétriques proposés par FranceConnect.
Seuls deux algorithmes de signature sont disponibles :
- ES256 (recommandé, le plus récent et le plus rapide) ;
- RS256.
Plus d'informations sur la signature
Signature du UserInfo #
Dans la version 1 de FranceConnect, tous les jetons ne sont pas signés, seul l'ID token est signé et la réponse de /api/v2/userinfo est un objet JSON.
Dans la version 2, l'ensemble des jetons contenant des données personnelles de l'usager sont signés, c'est à dire :
- l'ID Token, renvoyé lors de l'appel à /api/v2/token ;
- la réponse de /api/v2/userinfo.
Il est donc nécessaire de vérifier dans la version 2 de FranceConnect la signature de la réponse de /api/v2/userinfo. Cet ajout vise à garantir l'intégrité et la non répudiabilité (dans le cadre de la signature asymétrique) des données d'identité échangées.
Plus d'informations sur la signature de la réponse à /api/v2/userinfo
Méthodes d'appel du endpoint /authorize #
Dans la version 1 de FranceConnect, l'appel au endpoint /authorize ne pouvait se faire qu'à l'aide de la methode GET. La version 2 permet, au choix du fournisseur de service, d'utiliser les méthodes GET et POST.
plus d'informations sur l'utilisation du endpoint /api/v2/authorize
Paramètres d'appel du endpoint /authorize #
Le protocole OpenID Connect définit un certain nombre de paramètres d'appel pour le endpoint /authorize. La version 1 de FranceConnect était assez souple et certains paramètres étaient optionnels. La version 2 nécessite que certains de ces paramètres soient obligatoirement présent, notamment les paramètres suivants : acr_value, et prompt.
Le paramètre acr_values #
Le paramètre acr_values permet de définir le contexte de la demande d'authentification. Dans le cadre de FranceConnect, celui-ci sert à définir le niveau de garantie de l'identité qui sera transmise par FranceConnect. La version 2 de FranceConnect, tout comme la version 1, supporte uniquement le niveau faible (eidas1). Pour les niveaux substantiel et élevé, il est nécessaire d'utiliser FranceConnect+.
Dans la version 2, le paramètre acr_values est obligatoire et ne peut prendre que la valeur eidas1, correspondant au niveau faible.
Le paramètre prompt #
Le paramètre prompt permet de définir les actions nécessaires lors de l'authentification souhaitée par le fournisseur de service, comme :
- la réauthentification de l'utilisateur, via la valeur
login
; - la demande de consentement de l'utilisateur, via la valeur
consent
.
FranceConnect gère déjà de son côté les moments où l'utilisateur doit se réauthentifier ou non, et les moments où le consentement de l'utilisateur est attendu. Malgré cela, avec la version 2, le paramètre prompt est obligatoire, et le fournisseur de service doit passer deux valeurs au paramètre prompt lors de l'appel au endpoint /api/v2/autorize : login et consent.
La gestion des erreurs #
La version 1 de FranceConnect ne gère pas la redirection vers l'adresse de callback (redirect_uri) lors d'une erreur intervenant durant la cinématique de connexion. L'utilisateur se trouve alors dans l'impossibilité de revenir vers le fournisseur de service. Celui-ci doit alors lui proposer de recommencer sa cinématique de connexion avec FranceConnect ou d'utiliser une autre solution pour accéder au service.
Le protocole OpenID Connect prévoit de pouvoir revenir vers le service à travers la redirect uri en lui passant des paramètres indiquant l'erreur qui est survenue.
Afin de simplifier l'expérience utilisateur en cas d'erreur, la version 2 prend en compte ce mécanisme et redirige l'utilisateur vers la redirect_uri avec les paramètres correspondants aux erreurs.
Le fournisseur de service doit gérer ces codes d'erreurs et proposer un parcours adapté à l'utilisateur en lui offrant la possibilité par exemple de recommencer une connexion au travers de FranceConnect ou d'utiliser un mode de connexion alternatif.
Attention : un simple message d'erreur indiquant qu'une erreur s'est produite au niveau de FranceConnect ne suffit pas. Il est vraiment nécessaire d'offrir une continuité dans le service, même lorsque tout ne se passe pas comme attendu.
Plus d'informations sur la gestion des erreurs
Suppression des scopes address et phone #
Dans les premières années suivant le lancement de FranceConnect, en complément de l'identité pivot, il était possible de récupérer des données complémentaires comme l'adresse postale de l'usager ou son numéro de téléphone. En 2020, au vu de la faible fiabilité de ces données, il a été décicé que FranceConnect ne transmettrait plus ces données. Bien qu'il était toujours possible de les demander lors d'une cinématique de connexion, les données n'étaient tout simplement plus renvoyées.
Pour tous les fournisseurs de services qui ont intégrés FranceConnect depuis 2020, il n'est de toute manière pas possible de demander l'accès à ces deux données. Seuls les fournisseurs de service ayant réalisée leur intégration avant peuvent encore demander ces données sans pour autant les récupérer.
Lors du passage à la version 2 de FranceConnect, il ne sera plus possible de demander ces deux données. Il est donc nécessaire de s'assurer que votre service n'y fasse pas appel. Si c'est le cas, une erreur se produira et ne permettra pas à vos utilisateurs de se connecter au travers de FranceConnect.
Suppression du claim preferred_username du scope identite_pivot #
La version 1 de FranceConnect permet de récupérer le claim preferred_username au travers du scope identite_pivot. Dans la version 2 de FranceConnect, ce claim n'est pas retourné lorsque l'on demande le scope identite_pivot. Si votre service s'attend à récupérer cette donnée, il est nécessaire de le demander explicitement ou au travers d'un autre scope (comme profile qui le contient).
Plus d'informations sur la gestion des données à l'aide des scopes
Paramètres de la redirect_uri #
Lorsque l'usager termine sa cinématique de connexion auprès de FranceConnect, il est redirigé vers une adresse de redirection qui a été passé en paramètre de la requête à /api/v2/authorize.
Dans la version 1 de FranceConnect, seul deux paramètres étaient passés lors de l'appelle à cette adresse de redirection : code et state.
Le paramètre code correspond au code d'autorisation nécessaire pour la récupération de l' access_token et de l' ID Token. Le paramètre state correspond au paramètre state passé dans la requête à /api/v2/authorize. Celui-ci permet de faire le lien avec la cinématique de l'utiliseur une fois de retour vers le fournisseur de service.
Dans la version 2, en complément de ces deux paramètres, le paramètre iss est ajouté. Ce dernier permet d'identifier l'émetteur du code d'autorisation.