Différence entre l'ID Token et l'Access Token
Dans Keycloak (et plus généralement dans les systèmes utilisant OAuth 2.0 et OpenID Connect), l'ID token et l'access token ont des objectifs différents bien qu'ils soient tous deux des jetons JWT (JSON Web Tokens). Voici les différences principales :
1. ID Token (Jeton d'identité)
- Objectif : L'ID token contient des informations sur l'authentification de l'utilisateur et son identité. Il est utilisé principalement par le client (application) pour savoir qui est l'utilisateur connecté.
- Contenu : Il inclut des informations de profil utilisateur (ou "claims") comme l'identifiant unique de l'utilisateur (
sub
), son nom, son email, etc. Il peut également contenir des attributs personnalisés si configurés dans Keycloak. - Utilisation : Il est utilisé dans le cadre d'OpenID Connect pour fournir une preuve d'authentification à l'application cliente, indiquant que l'utilisateur s'est bien connecté et que l'autorité d'authentification (Keycloak) l'a authentifié.
- Public : L'ID token est visible par le client (application). Cependant, il ne donne pas d'accès aux ressources ou API protégées.
- Expiration : L'ID token a une durée de vie relativement courte, car son principal usage est de prouver l'authentification.
2. Access Token (Jeton d'accès)
- Objectif : L'access token est un jeton d'autorisation. Il permet à un utilisateur ou une application d'accéder à des ressources protégées (comme des API) sur un serveur de ressources en représentant les autorisations de l'utilisateur.
- Contenu : Il contient des informations sur les permissions ou les autorisations de l'utilisateur, comme les rôles ou les ressources auxquelles il a accès. Il peut inclure des informations spécifiques au scope demandé par l'application cliente.
- Utilisation : L'access token est envoyé dans les requêtes API pour autoriser l'accès à des ressources protégées. Le serveur API valide ce jeton pour déterminer si l'utilisateur ou l'application a les droits nécessaires pour accéder à une ressource spécifique.
- Confidentiel : Il est conçu pour être transmis aux serveurs de ressources (API) et ne doit pas être exposé directement à l'application cliente.
- Expiration : L'access token a généralement une durée de vie un peu plus longue que l'ID token, mais il peut être rafraîchi par un refresh token si nécessaire.
Différence Clé
- ID Token : utilisé pour prouver l'identité de l'utilisateur.
- Access Token : utilisé pour autoriser l'accès aux ressources protégées par l'application.
En résumé, l'ID token concerne l'authentification (qui est l'utilisateur ?), tandis que l'access token concerne l'autorisation (quelles ressources l'utilisateur peut-il accéder ?).
note
Dans Open ENT, les informations sur les classes, les établissements de rattachement sont ajoutées dans les 2 tokens