Implémentation d'OpenID Connect
FranceConnect et FranceConnect+ mettent en oeuvre le protocole OpenID Connect pour permettre à un fournisseur de service de leur déléguer l'identificiation et l'authentification des usagers, ainsi que la gestion des consentements qui sont nécessaire à la transmission des données personnelles des utilisateurs auprès du fournisseur de service.
Spécification OpenID Connect
Cette section explique les choix d'implémentation qui ont été pris dans le cadre de FranceConnect et de FranceConnect+. Il est fortement recommandé de se référer aux spécifications du protocole OpenID Connect lors de votre intégration de FranceConnect ou de FranceConnect+.
Les acteurs #
Pour rappel, le protocole OpenID Connect défini les acteurs suivants : User, Relying Party et OpenID Provider.
OpenId Connect fait intervenir 3 acteurs :
Acteur OpenId Connect | Acteur dans le contexte FranceConnect / FranceConnect+ |
---|---|
User | Utilisateur final du fournisseur de service |
Relying Party | Fournisseur de service |
OpenID Provider | FranceConnect et FranceConnect+ |
Flow OpenID Connect #
Le protocole OpenID Connect propose différents flow permettant de récupérer des tokens. FranceConnect et FranceConnect+ n'implémentent que Authorization code flow.
Discovery Mode #
FranceConnect et le discovery mode
Seule la version 2 de la plateforme FranceConnect permet d'utiliser le discovery mode. Si votre service utilise encore l'ancienne plateforme FranceConnect, il n'est pas possible de récupérer les informations de configuration via ce mode.
Le protocole OpenID Connect permet à l'Identity Provider d'exposer à Relying Party de récupérer dynamiquement ses données de configuration (meta-data).
Plus d'information sur OpenID Connect Discovery
FranceConnect et FranceConnect+ exposent leurs méta-data via les discovery url suivantes :
Plateforme | Environnement | Adresse |
---|---|---|
FranceConnect | Integration | https://fcp-low.integ01.dev-franceconnect.fr/api/v2/.well-known/openid-configuration |
FranceConnect | Production | https://oidc.franceconnect.gouv.fr/api/v2/.well-known/openid-configuration |
FranceConnect+ | Integration | https://auth.integ01.dev-franceconnect.fr/api/v2/.well-known/openid-configuration |
FranceConnect+ | Production | https://auth.franceconnect.gouv.fr/api/v2/.well-known/openid-configuration |
Signature et chiffrement des jetons #
FranceConnect et FranceConnect+ permettent de récupérer différents types de jetons :
Jeton | Format |
---|---|
access token | chaine de caractères |
id_token | JWT |
user info | JWT |
L'ensemble de jetons JWT fournis par FranceConnect+, c'est à dire l'ID Token et les User Info sont chiffrés et signés afin de garantir un niveau de confidentialité et d'intégrité afin de satisfaire les exigences des niveaux de garantie subtantiel et élévée défini dans le règlement eIDAS.
Les jetons fournis par FranceConnect ne sont pas chiffrés, ils sont par contre signés afin de garantir le niveau d'intégrité. Le niveau de confidentialité est assuré à ce niveau par le chiffrement TLS uniquement.
Les spécifications des algorithmes de signatures et de chiffrements utilisés par FranceConnect et FranceConnect+ sont les suivantes :
- JWA - https://tools.ietf.org/html/rfc7518
- JWS - https://tools.ietf.org/html/rfc7515#appendix-A.3
- JWE - https://tools.ietf.org/html/rfc7516#appendix-A.1
Signature des jetons par FranceConnect #
Les jetons sont signés par FranceConnect en utilisant l'algorithme de signature symétrique HS256 avec comme secret partagé le client_secret qui a été communiqué lors de la création du fournisseur de service.
Plus d'information sur la signature symétrique dans OpenID Connect
Signature des jetons par FranceConnect+ #
Les jetons sont signés par FranceConnect+ en utilisant ses propres clés de chiffrement, afin de permettre au fournisseur de service de s'assurer que ces deux jetons sont bien émis par FranceConnect+. Le fournisseur de service doit donc vérifier la signature des jetons en ayant pris le soin de récupérer les clés publiques de signature de FranceConnect+.
La signature permet de garantir l'intégrité et l'authenticité des données échangées.
Algorithme de signature de jetons utilisable par FranceConnect+
-
Asymétrique :
- ES256 (EC + SHA256)
Exposition des clés de signature
Les clés publiques de signature de FranceConnect+ sont changées régulièrement et sont disponibles via la JWKS URL présente dans les méta-data de la Discovery URL à l'adresse suivante :
Environnement | adresses du endpoint |
---|---|
intégration | https://auth.integ01.dev-franceconnect.fr/api/v2/jwks |
production | https://auth.franceconnect.gouv.fr/api/v2/jwks |
Chiffrement des jetons par FranceConnect+ #
Les jetons sont chiffrés par FranceConnect en utilisant un des clés publiques de chiffrement mis à disposition par le fournisseur de service afin de s'assurer que seul le fournisseur de service ne puisse consulter les informations présentes dans ces jetons. Le fournisseur de service doit mettre à disposition de FranceConnect+ ses clés publiques de chiffrement.
Le chiffrement permet de garantir la confidentialité des données échangées.
Algorithme de chiffrement des jetons (jwe+jws) :
- Hybride :
- RSA-OEAP + AES256-GCM
- ECDH-ES + AES256-GCM
Exposition des clés de chiffrement
Les clés publiques de chiffrement du fournisseur de service doivent être exposées à FranceConnect+ par le fournisseur de service sous la forme d'une URL au format JWK.
Cinématique de récupération de l'IDToken #
sequenceDiagram autonumber participant FS as Fournisseur de Service participant FC as FranceConnect+ FS->>+FC: POST <FC_URL>/api/v2/token FC->>+FS: GET FS public encryption keys FS-->>-FC: HTTP 200 FS public encryption keys FC-->>-FS: HTTP 200 Id Token + Access Token FS->>FS: déchiffrement de l'Id Token FS->>+FC: GET <FC_URL>/api/v2/jwks FC-->>-FS: HTTP FC+ public signing keys FS->>FS: validation de la signature de l'Id Token
- Le fournisseur de service appelle le endpoint /token
- FranceConnect+ demande au fournisseur de service sa clé publique de chiffrement
- Le fournisseur de service renvoie sa clé de chiffrement
- FranceConnect+ renvoie au fournisseur de service l'ID Token chiffré et signé
- Le fournisseur de service déchiffre l'ID Token
- Le fournisseur de service demande à FranceConnect+ ses clés publiques de signature
- FranceConnect+ renvoie ses clés publiques de signature
- Le fournisseur de service vérifie que la signature de l'ID Token est valide.
Cinématique de récupération du UserInfo #
La cinématique est similaire à celle de la récupération de l'ID Token
sequenceDiagram autonumber participant FS as Fournisseur de Service participant FC as FranceConnect+ FS->>+FC: POST <FC_URL>/api/v2/userinfo FC->>+FS: GET FS public encryption keys FS-->>-FC: HTTP 200 FS public encryption keys FC-->>-FS: HTTP 200 Id Token + Access Token FS->>FS: déchiffrement de l'Id Token FS->>+FC: GET <FC_URL>/api/v2/jwks FC-->>-FS: HTTP FC+ public signing keys FS->>FS: validation de la signature de l'Id Token
- Le fournisseur de service appelle le endpoint /userinfo
- FranceConnect+ demande au fournisseur de service sa clé publique de chiffrement
- Le fournisseur de service renvoie sa clé de chiffrement
- FranceConnect+ renvoie au fournisseur de service l'ID Token chiffré et signé
- Le fournisseur de service déchiffre la réponse du /userinfo
- Le fournisseur de service demande à FranceConnect+ ses clés publiques de signature
- FranceConnect+ renvoie ses clés publiques de signature
- Le fournisseur de service vérifie que la signature de la réponse du /userinfo est valide.
Renouvellement des clés de signature
Pour des raisons de sécurité, Les clés de signature de FranceConnect+ sont régulièrement renouvelées. Celles-ci doivent être récupérées régulièrement par le fournisseur de service.
En Bref
- FranceConnect+ et FranceConnet implémentent l'Authorization code flow.
- Il est possible de récupérer les données de configuration en passant la discovery url.
- FranceConnect+ chiffre et signe les jetons avec des clés publiques/privées.
- FranceConnect signe les jetons avec le client secret.