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 accordée à l’application. Il peut s’agir d’un identifiant servant à récupérer l’information d’autorisation, ou encore contenir lui-même l’information d’autorisation (par exemple, l’identité de l’utilisateur, les permissions, etc.) d’une manière vérifiable.Il est très 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 effectuant des requêtes vers l’API, l’API peut inspecter la revendication scope pour s’assurer que les permissions requises ont bien été accordées afin d’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 qui ont été 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, alors le jeton d’accès contiendra une liste des portées autorisées.Par exemple, l’API de feuilles de temps peut accepter quatre niveaux d’autorisation différents : la lecture des feuilles de temps (portée
read:timesheets), la création de feuilles de temps (portée create:timesheets), la suppression de feuilles de temps (portée delete:timesheets) et l’approbation de 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 pour le compte 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 nécessaire. Dans ce cas-ci, il s’agit de l’Authentication API d’Auth0.
Octroi implicite
authorization_code. Cela s’explique par le fait que l’application, qui est 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 de hachage 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 envoyer une requête à l’API au nom de l’utilisateur.
- L’application démarre le flux et redirige le navigateur vers Auth0 (plus précisément vers le point de terminaison /authorize), afin que l’utilisateur puisse s’authentifier.
- Auth0 authentifie l’utilisateur. La première fois que l’utilisateur passe par ce flux, si l’application est une application tierce, une page de consentement s’affiche; elle présente les permissions qui seront accordées au client (par exemple, publier des messages, afficher des contacts, etc.).
- Auth0 redirige l’utilisateur vers l’application avec un jeton d’accès (et, facultativement, un ID Token) dans le fragment de hachage de l’URI. L’application peut maintenant extraire les jetons du fragment de hachage.
- L’application peut utiliser le jeton d’accès pour envoyer une requête à l’API au nom de l’utilisateur.
- Les permissions sont les actions qu’une personne peut effectuer. Pour répondre aux besoins d’affaires d’ExampleCo, nous configurerons quatre permissions : lire, créer, supprimer et approuver des feuilles de temps.
- Les rôles sont des ensembles de permissions. L’application de feuilles de temps d’ExampleCo sera utilisée par deux types d’utilisateurs (employés et gestionnaires), chacun ayant des permissions différentes; nous configurerons donc deux rôles : employé et gestionnaire.