Chiffrement et signature des données
Les données retounées par le service d'introspection checktoken
sont chiffrées afin d'en assurer la confidentialité, et signées afin d'en garantir l'intégrité et l'authenticité.
Les spécifications des algorithmes de signature et de chiffrement utilisés sont les suivants :
- 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
Le diagramme de séquence ci-dessous décrit les échanges entre le fournisseur de données et FranceConnect ayant trait au chiffrement et à la signature lors de l'appel au service d'introspection /api/v2/checktoken
.
sequenceDiagram autonumber participant FD as Fournisseur de données participant FC as FranceConnect FD->>FC : POST /api/v2/checktoken (access token + authN FD) FC->>FC: check authN FD FC->>FD : GET /public_key alt authN FD valide & clé publique FS dispo FD-->>FC : HTTP 200 - clé publique de chiffrement FC-->>FD : HTTP 200 - jeton signé et chiffré FD-->>FD : dechiffrement du jeton FD->>+FC: GET /api/v2/jwks FC-->>-FD: HTTP 200 - FranceConnect public keys FD-->>FD : verification de la signature else erreur lors de la récupération de la clé publique du FS FD-->>FC : HTTP 4XX / 5XX / Timeout - clé publique de chiffrement non récupérée FC-->>FD : HTTP 500 end
- Le fournisseur de données fait appel au service d'introspection
/api/v2/checktoken
- FranceConnect authentifie le fournisseur de données
- FranceConnect demande au fournisseur de données sa clé publique de chiffrement
- Le fournisseur de données retourne sa clé publique de chiffrement
- FranceConnect retourne le jeton chiffré et signé
- Le fournisseur de données déchiffre le jeton
- Le fournisseur de données demande à FranceConnect / FranceConnect+ sa clé publique de signature
- FranceConnect / FranceConnect+ retourne sa clé publique de signature
- Le fournisseur de données vérifie la signature
Dans le cas où la récupération de la clé publique de chiffrement du fournisseur de données n'est pas possible, la séquence s'arrête plus tôt. La séquence est alors la suivante :
- Le fournisseur de données fait appel au service d'introspection
/api/v2/checktoken
- FranceConnect / FranceConnect+ vérifie l'authentification du fournisseur de données
- FranceConnect / FranceConnect+ demande au fournisseur de données sa clé publique de chiffrement
- Une erreur se produit lors de la récupération de la clé publique de chiffrement du fournisseur de données (timeout : erreurs HTTP 4xx ou 5xx)
- FranceConnect / FranceConnect+ retourne une erreur HTTP 500
Déchiffrement des jetons #
Pour permettre le chiffrement des jetons, le fournisseur de données doit exposer sa clé publique de chiffrement sur une url qui doit être communiquée lors de l'enregistrement du fournisseur de données. Cette URL doit être accessible par la plateforme FranceConnect / FranceConnect+.
Les algorithmes utilisables sont les suivants :
- RSA-OEAP+AES256-GCM
- ECDH-ES+AES256-GCM
Le choix de l'algorithme doit être communiqué lors de l'enregistrement du fournisseur de données.
Signature des jetons #
Lors de l'envoi de jetons dans la réponse du service d'introspection /api/v2/checktoken
, les données sont signés par FranceConnect ou FranceConnect+ en utilisant l'algorithme choisi et en utilisant un couple clés publique / privée.
Afin de garantir l'authenticité et l'intégrité du jeton, il est nécessaire de procéder à la validation de sa signature. Pour cela, il faut :
- récupérer les clés publiques de FranceConnect ou FranceConnect+ (en fonction de la plateforme utilisée);
- vérifier la signature en utilisant la clé publique, parmi celles récupérées précédemment, dont le
kid
correspond à celui de l'entête du jeton.
Les clés publiques de FranceConnect et FranceConnect étant renouvellées régulièrement, il est nécessaire de s'assurer d'utiliser la bonne clé lors de la vérification de la signature.
Les clés publiques de signature sont disponibles via le endpoint /api/v2/jwks
.
Les algorithmes utilisés sont les suivants :
- FranceConnect : ES256 ou RS256
- FranceConnect+ : ES256 uniquement
Le choix de l'algorithme de signature doit être communiqué lors de l'enregistrement du fournisseur de données.