Implémenter un Serveur de Ressources (SR)
Utilisation
Un SR (ou Resource Server dans la terminologie OIDC) permet d'effectuer des actions au nom d'un utilisateur proConnecté et de renvoyer à un Fournisseur de Service des informations concernant l'utilisateur.
Fonctionnement
- L'utilisateur s'authentifie sur le FS via ProConnect selon le parcours classique. Dans le cadre de cette connexion, un
access_tokenest renvoyé au FS. - Le FS requête une route du SR pour effectuer une action. Par exemple, si le SR contient des informations de géolocalisation sur les utilisateurs, il peut s'agir de la route
https://example.com/api/users/locations. Cet appel doit contenir l'access_tokenrenvoyé par ProConnect lors de l'appel du FS autoken_endpoint. L'usage est d'envoyer l'access_tokenenBearerdans le headerAuthorization. - Le SR requête l'
introspection_endpointde ProConnect avec l'access_tokenselon les modalités indiquées dans la RFC. - Le SR reçoit en réponse de l'
introspection_endpointun JSON qui contient notamment deux champs utiles :
active: défini si l'access_tokenest encore actif. Si le champ vautfalse, ce sera le seul champ renvoyé par ProConnectsub: l'identifiant unique de l'utilisateur dans ProConnect
- Le SR, qui peut maintenant identifier l'utilisateur à l'aide du
subrécupéré, répond à la requête du FS en renvoyant les données concernant l'utilisateur. Dans notre exemple, il récupère toutes les géolocalisations liées à cesubet les renvoie au FS.
Enregistrement auprès de ProConnect
Le SR doit d'abord suivre le processus d'inscription auprès de ProConnect en tant que FS via le Démarches Simplifiées. En effet, inscrire un Resource Server auprès de ProConnect doit se faire lors de l'enregistrement d'un FS.
Il doit ensuite écrire à support.partenaires@mail.proconnect.gouv.fr en spécifiant :
- le
client_idde son FS qui lui aura été transmis après inscription - l'
introspection_signed_response_alg: aucun, RS256, HS256 ou ES256. Par défaut, le retour ne sera pas signé. Si vous souhaitez néanmoins que la réponse de l'introspection soit signé, nous recommandons l'algorithme RS256.
Une fois la réponse du support reçue, votre SR est capable d'effectuer les appels à ProConnect !
« NB: l'
introspection_signed_response_algindique comment ProConnect signe le contenu de la réponse d’introspection. Votre bibliothèque OIDC cliente vérifie l’intégrité et l'authenticité de la réponse avec le JWKS public de ProConnect. »
Exemple d'implémentation
Voici un exemple de Resource Server implémenté en ExpressJS : https://github.com/proconnect-gouv/proconnect-test-resource-server
FAQ
Ai-je besoin d'un nouveau client ID pour le SR que je souhaite implémenter ?
« Oui, nous recommandons de faire une demande de couple client ID / client secret spécifique pour votre SR »