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 :

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 :

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 :

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.

Plus d'information sur le 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

  1. Le fournisseur de service appelle le endpoint /token
  2. FranceConnect+ demande au fournisseur de service sa clé publique de chiffrement
  3. Le fournisseur de service renvoie sa clé de chiffrement
  4. FranceConnect+ renvoie au fournisseur de service l'ID Token chiffré et signé
  5. Le fournisseur de service déchiffre l'ID Token
  6. Le fournisseur de service demande à FranceConnect+ ses clés publiques de signature
  7. FranceConnect+ renvoie ses clés publiques de signature
  8. 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

  1. Le fournisseur de service appelle le endpoint /userinfo
  2. FranceConnect+ demande au fournisseur de service sa clé publique de chiffrement
  3. Le fournisseur de service renvoie sa clé de chiffrement
  4. FranceConnect+ renvoie au fournisseur de service l'ID Token chiffré et signé
  5. Le fournisseur de service déchiffre la réponse du /userinfo
  6. Le fournisseur de service demande à FranceConnect+ ses clés publiques de signature
  7. FranceConnect+ renvoie ses clés publiques de signature
  8. 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.
Paramètres d'affichage
Choississez un thème