C’est ce que permet le
Point d’extrémité d’informations sur les clefs (Keys Endpoint)
https://oa.dnc.global/keys
Ce point permet à un serveur de ressource d’accéder à une liste de définitions des clés publiques
Chaque définition de clé est représentée sous un format JSON sont définies dans le document JSON Web Key (JWK).
Exemple
Voici un exemple de réponse au format JSON :
[JSON]
{"keys":[{
"kid":"618584200ef916a154008d898a1e7edc",
"kty":"RSA",
"alg":"RS256",
"use":"sig",
"e":"AQAB",
"n":"ykcWIXjQ-f61XCJutT4JcgpmmobtB0U7ZcejT8tBD8rOZPkQDYf0Q3pMjCkNT8RRKzMYtkelY2CNn3U7kVJMgbJAtvZsCdlChVHAKvRnjwh1GR_6Zpmajm5cuz4bjQWWUIPIoXe_4JbC8nCrHdaagzB_6PrV_NILyn5unG1RLOrWx7_yzLaterDKxHTCBeOlqv_5VGFey0Ecf-X7Bj8YRx6fpamK4BcEAZSAbZMtAnTckp3hOYJgZo3MOXDxSQw1YR83i5Udcoaf7sxfhEA_b7r9CeNfgj76MKM7sdCfBMI7_JSz-YU_pJKCuT9Ny3IJQ0fQHpDzSq2oD_3cDcLjfXTGM67rXElwr9l8yrSNa29UGK4q2u9cFCQmJGlxVhZU6bzs7l4202LTJdPlzm_29jwLVvtqnVJSovMLHx84ReFtus1RdKRGB2plDQccvBNvp92D9lOnM3bAu1fKRAJwNh3hg1d6k7MVCHxoo9HVnkxzW48rAAJE2nk44a2Y0cclufBhvKRdNavldS1XOyZ_qf3qCAzsuYF1VAga8I-QOb6OyXp0KGLptbyYD-ZXISGPw3pDD3aAof_PMfFhSB96GHDnm-UCRpFHndQ_fZgtZhWugU8z22rV-irYCySqVkpE0ToWbNXNFZ9Jo1GXdwkpi1WjB7S-ipjzRFOlxhwbvZ0"},
...
kid
Comme différentes applications clientes peuvent utiliser la même paire de clé publique/privée, les clés sont indexées par un identifiant "kid" plutôt que par un client_id.
Cet identifiant est notamment présent dans la charge utile du jeton JWT, ce qui permettra de sélectionner la clé publique nécessaire pour valider la signature du jeton JWT.
jwks_uri, fichier jwks.json
La norme prévoit que le document de découverte .well-known/openid_configuration définisse une constante jwks_uri donnant l’URL du fichier jwks.json, sous la forme :
"jwks_uri" : "https://oa.dnc.global/jwks/jwks.json",
Cette URL permet d’obtenir la même information que par le Point d’extrémité d’informations sur les clefs. Cependant, ces données sont statiques, alors que l’appel au contrôleur Keys recalcule le fichier jwks.json à chaque fois afin de prendre en compte un éventuel changement.
Notes :
Outre le fichier jwks.json, le dossier /jwks contient un fichier au format JSON pour chaque clé publique, sous le nom
<kid>.json
.
Compte-tenu de la charge de calcul nécessaire à l’établissement du fichier, l’appel au point d’extrémité Keys doit être réservé à des applications de confiance ou être protégé contre les attaques de type déni de service.
Pour éviter le recalcul du fichier jwks.json à chaque appel de Keys, il est possible de modifier la règle de réécriture dans le fichier .htaccess pour :
RewriteRule ^keys /jwks/jwks.json [QSA,L]
Une clé publique peut également être lue au moyen de l’API HTTP REST + TreeQL.