Qu’est-ce qu’un jeton d’accès ?
Un Jeton d’accès (aussi appelé
access_token) est une chaîne opaque qui représente une autorisation accordée à l’application. Il peut s’agir d’un identifiant utilisé pour récupérer l’information d’autorisation, ou encore contenir lui-même cette information (par exemple, l’identité de l’utilisateur, les autorisations, etc.) d’une manière vérifiable.Il est assez courant que les jetons d’accès soient implémentés 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 l’application cliente transmet le Jeton d’accès dans ses requêtes à l’API, l’API peut inspecter la revendication scope pour s’assurer que les autorisations requises ont bien été accordées afin d’appeler le point de terminaison d’API en question.
Que sont les scopes ?
Chaque Jeton d’accès peut inclure une liste des autorisations qui ont été accordées à l’application. Lorsqu’une application s’authentifie auprès d’Auth0, elle précise la liste des scopes (ou autorisations) qu’elle demande. Si ces scopes sont autorisés, le Jeton d’accès contiendra alors une liste des scopes autorisés.Par exemple, l’API de feuilles de temps peut accepter quatre niveaux d’autorisation différents : lecture des feuilles de temps (scope
read:timesheets), création de feuilles de temps (scope create:timesheets), suppression de feuilles de temps (scope delete:timesheets) et approbation de feuilles de temps (scope approve:timesheets).Lorsqu’une application demande à l’API de créer une nouvelle entrée de feuille de temps, le Jeton d’accès doit contenir le scope create:timesheets. De la même façon, pour supprimer des feuilles de temps existantes, le Jeton d’accès doit contenir le scope delete:timesheets.Pour en savoir plus sur les scopes, consultez Scopes.Rôles OAuth
Dans tout flux OAuth 2.0, on peut distinguer les rôles suivants :
- Propriétaire de la ressource : l’entité qui peut accorder l’accès à une ressource protégée. Il s’agit généralement de l’utilisateur final.
- Serveur de ressources : le serveur qui héberge les ressources protégées. Il s’agit de l’API à laquelle vous voulez accéder.
- Application : une application qui demande l’accès à une ressource protégée au nom du propriétaire de la ressource.
- Serveur d’autorisation : le serveur qui authentifie le propriétaire de la ressource et émet des jetons d’accès après avoir obtenu l’autorisation requise. Dans ce cas-ci, il s’agit de l’Authentication API d’Auth0.
Octroi implicite
authorization_code soit nécessaire. Cela s’explique par le fait que l’application, généralement une application JavaScript exécutée dans un navigateur, est considérée comme moins fiable qu’une application Web exécutée sur le serveur; on ne peut donc pas lui confier le client_secret (qui est requis dans l’octroi par code d’autorisation).
Une fois l’utilisateur authentifié, l’application reçoit le et le Jeton d’accès dans le fragment hash de l’URI. L’application peut maintenant utiliser l’ID Token pour obtenir des renseignements sur l’utilisateur, et le Jeton d’accès pour appeler l’API au nom de l’utilisateur.
- L’application lance le flux et redirige le navigateur vers Auth0 (plus précisément vers le /authorize endpoint), afin que l’utilisateur puisse s’authentifier.
- Auth0 authentifie l’utilisateur. La première fois que l’utilisateur passe par ce flux, et si l’application est une application tierce, une page de consentement s’affichera, où les autorisations accordées à l’application seront listées (par exemple, publier des messages, afficher la liste des contacts, etc.).
- Auth0 redirige l’utilisateur vers l’application avec un Jeton d’accès (et, au besoin, un ID Token) dans le fragment hash de l’URI. L’application peut maintenant extraire les jetons de ce fragment hash.
- L’application peut utiliser le Jeton d’accès pour appeler l’API au nom de l’utilisateur.
- Les autorisations correspondent aux actions qu’une personne peut effectuer. Pour répondre aux besoins d’affaires d’ExampleCo, nous configurerons quatre autorisations : lire, créer, supprimer et approuver des feuilles de temps.
- Les rôles sont des ensembles d’autorisations. L’application de feuilles de temps d’ExampleCo sera utilisée par deux types d’utilisateurs (les employés et les gestionnaires), chacun ayant des autorisations différentes; nous configurerons donc deux rôles : employé et gestionnaire.