Service d'introspection
FranceConnect et FranceConnect+ mettent à disposition des fournisseurs de données un service d'introspection leur permettant de :
- vérifier la validité d'un jeton d'accès reçu du fournisseur de service;
- récupérer les données d'identité de l'usager associées au jeton d'accès;
- récupérer la liste des scopes associés au jeton d'accès afin de s'assurer qu'il permet d'accéder aux ressources demandées.
Appel au service d'introspection #
Le service d'introspection de FranceConnect / FranceConnect se base sur la spécification JWT Response for OAuth Token Introspection.
Le service d'introspection est disponible sur le endpoint /api/v2/checktoken
.
- Méthode HTTP : POST
- Content-Type : application/x-www-form-urlencoded
Les paramètres à passer dans le corps de la requête sont :
- client_id et client_secret pour l'authentification
- token, qui accepte un jeton d'accès, qui a été transmis par le fournisseur de service et qui doit être vérifié.
POST /api/v2/checktoken HTTP/1.1
Host: fcp-low.integ01.dev-franceconnect.fr
User-Agent: curl/7.68.0
Accept: _/_
Content-Type: application/x-www-form-urlencoded
Content-Length: 172
Connection: close
client_id=423dcbdc5a77fcf61ed00ff5989d72379c26d9ed4c8e4e05a87cffae019586e0&client_secret=36bb214e7a7743c8da60ae991d8908947147d637137c5bf14bc2fc53e1055847&
token=529caefdfdfdeee0c5387e003aa51aaad77b6b263ce12b33e1c7c89cb1e18151cv1
Réponse du service d'introspection #
Dans le cas où le code retour de la réponse du service d'instrospection est un HTTP 200, le contenu de la réponse sera signé et chiffré. Il est nécessaire de les déchiffrer et de valider la signature avant le traitement de la réponse.
Les réponses indiquées dans les sous-sections suivantes seront déjà déchiffrées et la signature aura été validée. Il s'agit uniquement du payload du jeton JWT. La réponse du service respecte les spécifications JWT Response for OAuth Token Introspection | JWT Response
Le payload de la réponse contient les informations suivantes :
- token_introspection : jeton d'introspection permettant de connaitre les informations sur le jeton d'accès
- aud client_id du fournisseur de données qui a effectué la demande d'introspection
- iat date de création du jeton d'introspection
- iss indique la plateforme émettrice (FranceConnect+ ou FranceConnect) du jeton d'accès
Exemple du payload de la réponse :
{
"aud": "423dcbdc5a15ece61ed00ff5989d72379c26d9ed4c8e4e05a87cffae019586e0",
"iat": 1704965332,
"iss": "https://auth.integ01.dev-franceconnect.fr/api/v2",
"token_introspection": {
"active": true,
"aud": "6925fb8143c76eded44d32b40c0cb1006065f7f003de52712b78985704f39950",
"sub": "2fa48e3542c8645567f983efc96305808ae7d3f0d9cc4016ef40c3cde44844cfv1",
"iat": 1704965328,
"exp": 1704965388,
"acr": "eidas2",
"jti": "Wn5igB6_frAVBXQgShzI0znLE3fid2cWZHR9TWtqxZM",
"scope": "dgfip_rfr dgfip_aft",
"gender": "female",
"family_name": "DUBOIS",
"given_name": "Angela Claire Louise",
"given_name_array": ["Angela", "Claire", "Louise"],
"birthdate": "1962-08-24",
"birthplace": "75107",
"birthcountry": "99100"
}
}
Jeton d'introspection #
Le jeton d'introspection contenu dans ce payload est un objet JSON, tel que spécifié dans la RFC 7662 OAuth 2.0 Token Introspection. Il contient notamment les informations ci-dessous (des informations supplémentaires peuvent ne pas être décrites ci-dessous mais sont présentes dans la RFC 7662).
Attribut | Description | Format |
---|---|---|
active | indique si le jeton d'accès est valide | true ou false |
sub | identifiant technique de la personne, spécifique pour le fournisseur de données | chaine de caractères ASCII |
scope | liste des scopes associés au jeton d'accès | liste de scopes séparés par des espaces |
gender | sexe de la personne | male ou female |
family_name | Nom de famille de naissance de la personne | |
given_name | prénoms de la personne | liste des prénoms séparés par des espaces |
given_name_array | prénoms de la personne | liste de prénoms sous la forme d'un tableau |
birthdate | date de naissance | YYYY-MM-DD, avec la possibilité d'avoir 00 pour le mois ou le jour si ces derniers ne sont pas connus |
birthplace | ville de naissance | COG commune |
birthcountry | pays de naissance | COG pays |
Dans le cas où le jeton d'accès n'est pas ou n'est plus valide, le jeton d'introspection contient uniquement l'attribut active avec la valeur false.
Il est possible pour un fournisseur de service de demander accès à des ressources de plusieurs fournisseurs de données. Dans ce cas, le jeton d'accès est porteur des scopes relatifs aux deux fournisseurs de données. Pour des raisons d'isolation et de confidentialité, la liste des scopes renvoyés dans le jeton d'introspection ne correspond qu'aux scopes définis pour le fournisseur de données qui a fait l'appel au service d'introspection. Il est donc possible que la liste des scopes soit vide si aucun scope ne correspond à ceux enregistrés pour votre fournisseur de données et que le fournisseur de service fait tout de même appel à vos API.