Qu’est-ce qu’un jeton d’accès ?
Un jeton d’accès (aussi appelé
access_token) est une chaîne opaque représentant une autorisation émise à l’application. Il peut s’agir d’un identifiant utilisé pour récupérer les informations d’autorisation, ou encore contenir lui-même les informations d’autorisation (par exemple, l’identité de l’utilisateur, les permissions, etc.) d’une manière vérifiable.Il est assez courant que les jetons d’accès soient mis en œuvre sous forme de JSON Web Tokens.Pour en savoir plus sur les jetons d’accès Auth0, consultez Access Token.scope.
Par la suite, lorsque le client transmet le jeton d’accès en faisant des requêtes à l’API, l’API peut inspecter le claim scope pour s’assurer que les permissions requises ont bien été accordées pour appeler le point de terminaison d’API en question.
Que sont les portées ?
Chaque jeton d’accès peut inclure une liste des permissions accordées au client. Lorsqu’un client s’authentifie auprès d’Auth0, il précise la liste des portées (ou permissions) qu’il demande. Si ces portées sont autorisées, le jeton d’accès contiendra alors une liste de portées autorisées.Par exemple, l’API de feuilles de temps peut accepter quatre niveaux d’autorisation différents : lire des feuilles de temps (portée
read:timesheets), créer des feuilles de temps (portée create:timesheets), supprimer des feuilles de temps (portée delete:timesheets) et approuver des feuilles de temps (portée approve:timesheets).Lorsqu’un client demande à l’API de créer une nouvelle entrée de feuille de temps, le jeton d’accès doit alors contenir la portée create:timesheets. De la même façon, pour supprimer des feuilles de temps existantes, le jeton d’accès doit contenir la portée delete:timesheets.Pour en savoir plus sur les portées, consultez Scopes.Rôles OAuth
Dans tout flux OAuth 2.0, on peut identifier les rôles suivants :
- Resource Owner : l’entité qui peut accorder l’accès à une ressource protégée. Il s’agit généralement de l’utilisateur final.
- Resource Server : le serveur qui héberge les ressources protégées. C’est l’API à laquelle vous voulez accéder.
- Client : une application qui demande l’accès à une ressource protégée au nom du Resource Owner.
- serveur d’autorisation : le serveur qui authentifie le Resource Owner et émet des jetons d’accès après avoir obtenu l’autorisation appropriée. Dans ce cas, il s’agit de l’Authentication API d’Auth0.
Clé de preuve pour l’échange de code (PKCE)
authorization_code renvoyé par Auth0 et l’échanger contre un jeton d’accès (et éventuellement un jeton d’actualisation).
La clé de preuve pour l’échange de code (PKCE) (définie dans la RFC 7636) est une technique utilisée pour atténuer ce type d’attaque par interception du code d’autorisation.
Avec PKCE, l’application crée, pour chaque requête d’autorisation, une clé aléatoire générée de façon cryptographiquement sûre appelée code_verifier et sa valeur transformée appelée code_challenge, qui est envoyée à Auth0 pour obtenir le authorization_code. Lorsque l’application reçoit le authorization_code, elle envoie le code et le code_verifier au d’Auth0 pour les échanger contre les jetons demandés.

- L’application native lance le flux et redirige l’utilisateur vers Auth0 (plus précisément vers le point de terminaison /authorize), en envoyant les paramètres
code_challengeetcode_challenge_method. - Auth0 redirige l’utilisateur vers l’application native avec un
authorization_codedans la chaîne de requête. - L’application native envoie le
authorization_codeet lecode_verifier, ainsi que leredirect_uriet leclient_id, à Auth0. Cela se fait à l’aide du point de terminaison /oauth/token. - Auth0 valide ces informations et renvoie un jeton d’accès (et, facultativement, un jeton d’actualisation).
- L’application native peut utiliser le jeton d’accès pour appeler l’API au nom de l’utilisateur.
Si la rotation des jetons d’actualisation est activée, un nouveau jeton d’actualisation est généré à chaque requête et émis avec le jeton d’accès. Lorsqu’un jeton d’actualisation est échangé, le jeton d’actualisation précédent est invalidé, mais l’information sur cette relation est conservée par le serveur d’autorisation.