Passer au contenu principal
Ce tutoriel effectue la validation des jetons d’accès en utilisant le gem jwt dans une classe Auth0Client personnalisée. Un concern appelé Secured est utilisé pour autoriser les points de terminaison qui nécessitent une authentification par le biais d’un jeton d’accès entrant.Si vous n’avez pas encore créé d’API dans votre Auth0 Dashboard, vous pouvez utiliser le sélecteur interactif pour créer une nouvelle API Auth0 ou sélectionner une API existante pour votre projet.Pour configurer votre première API via Auth0 Dashboard, consultez notre guide de démarrage.Chaque API Auth0 utilise l’identificateur API, dont votre application a besoin pour valider le jeton d’accès.
Vous ne connaissez pas Auth0? Découvrez Auth0 et l’implémentation de l’authentification et de l’autorisation d’API en utilisant le cadre d’applications OAuth 2.0.
1

Définir les autorisations

Les autorisations vous permettent de définir comment les ressources peuvent être accessibles au nom de l’utilisateur avec un jeton d’accès donné. Par exemple, vous pouvez choisir d’accorder un accès en lecture à la ressource messages si les utilisateurs ont le niveau d’accès gestionnaire et un accès en écriture à cette ressource s’ils ont le niveau d’accès administrateur.Vous pouvez définir les autorisations autorisées dans la vue Permissions (Autorisations) de la section API d’Auth0 Dashboard.
Auth0 Dashboard> Applications > APIs (API) > [Specific API (API précise)] > Onglet Permissions (Autorisations)
Cet exemple utilise la permission read:messages.
2

Installer les dépendances

Installer le gem jwt.
gem 'jwt'
bundle install
3

Créer une classe Auth0Client

Créez une classe appelée Auth0Client. Cette classe décode et vérifie le jeton d’accès entrant provenant de l’en-tête Authorization de la requête.La classe Auth0Client récupère la clé publique de votre locataire Auth0 et l’utilise pour vérifier la signature du jeton d’accès. La structure Token définit une méthode validate_permissions pour rechercher une scope particulière dans un jeton d’accès en fournissant un tableau des permissions requises et en vérifiant si elles sont présentes dans la charge utile du jeton.
4

Définir un concern Secured

Créez un concern appelé Secured qui recherche le jeton d’accès dans l’en-tête Authorization d’une requête entrante.Si le jeton est présent, Auth0Client.validate_token utilisera le gem jwt pour vérifier la signature du jeton et valider les demandes du jeton.Outre la vérification de la validité du jeton d’accès, concern possède un mécanisme permettant de confirmer que le jeton dispose d’une permission suffisante pour accéder aux ressources demandées. Dans cet exemple, nous définissons une méthode validate_permissions qui reçoit un bloc et vérifie les autorisations en appelant la méthode Token.validate_permissions de la classe Auth0Client.Pour la route /private-scoped, les permissions définies seront croisées avec les permissions provenant de la charge utile, afin de déterminer si elle contient un ou plusieurs éléments de l’autre tableau.
5

Inclure la préoccupation Secure dans votre ApplicationController

En ajoutant la préoccupation Secure à votre contrôleur d’application, vous n’aurez plus qu’à utiliser un filtre before_action dans le contrôleur qui requiert une autorisation.
6

Créer le point de terminaison public

Créez un contrôleur pour gérer le point de terminaison public /api/public.Le point de terminaison /public ne requiert aucune autorisation et aucune before_action n’est donc nécessaire.
7

Créer les points de terminaison privés

Créez un contrôleur pour traiter les points de terminaison privés : /api/private et /api/private-scoped./api/private est disponible pour les requêtes authentifiées contenant un jeton d’accès sans permission supplémentaire./api/private-scoped est disponible pour les requêtes authentifiées contenant un jeton d’accès dont la permission read:messages est accordée.Les points de terminaison protégés doivent appeler la méthode authorize du concern Secured; vous devez pour cela utiliser before_action :authorize, ce qui assure que la méthode Secured.authorize est appelée avant chaque action dans le PrivateController.

Faire un appel à votre API

Pour appeler votre API, vous avez besoin d’un jeton d’accès. Vous pouvez obtenir un jeton d’accès à des fins de test dans la vue Test dans vos API settings (Paramètres API).
Auth0 Dashboard> Applications > API > [API specifique] > Onglet Test
Fournissez le jeton d’accès comme un en-tête Authorization dans vos demandes.
curl --request get \
--url 'http:///%7ByourDomain%7D/api_path' \
--header 'authorization: Bearer YOUR_ACCESS_TOKEN_HERE'
Point de contrôle
Maintenant que vous avez configuré votre application, exécutez-la pour vérifier que : GET /api/public est disponible pour les demandes non authentifiées. GET /api/private est disponible pour les demandes authentifiées. GET /api/private-scoped est disponible pour les demandes authentifiées contenant un jeton d’accès avec la permission read:messages.

Étapes suivantes

Beau travail! Si vous en êtes arrivé là, vous devriez avoir la connexion, la déconnexion et les informations de profil utilisateur actives dans votre application.Cela conclut notre tutoriel de démarrage rapide, mais il y a tellement plus à explorer. Pour en savoir plus sur ce que vous pouvez faire avec Auth0, consultez :
  • Auth0 Dashboard : apprenez à configurer et gérer votre locataire et vos applications Auth0
  • Trousse SDK omniauth-auth0 : explorez en détail la trousse SDK utilisée dans ce tutoriel
  • Auth0 Marketplace : découvrez des intégrations que vous pouvez activer pour étendre les fonctionnalités d’Auth0
I