- Confirmer que le jeton d’accès a été transmis dans l’en-tête
authorizationde la requête pour accéder à l’API. - Vérifier la signature RS256 du jeton d’accès à l’aide d’une clé publique obtenue à partir d’un point de terminaison JWKS.
- S’assurer que le jeton d’accès contient les revendications requises, soit
isspour l’émetteur etaudpour l’.
- Créer une API Auth0
- Importer et déployer l’API AWS API Gateway
- Créer les autorisateurs personnalisés
- Sécuriser l’API à l’aide d’autorisateurs personnalisés
- Tester votre déploiement
300 secondes et la durée maximale de mise en cache est de 3600 secondes (vous pouvez aussi définir la valeur à 0 pour désactiver la mise en cache).
Pour en savoir plus, consultez What is Amazon API Gateway? dans le guide du développeur Amazon. Pour plus d’informations sur la validation des , consultez notre article JSON Web Token.
Prérequis
Créer une API Auth0
- Accédez à Auth0 Dashboard > Applications > APIs, puis sélectionnez Create API.
-
Entrez des valeurs dans les champs suivants, puis sélectionnez Create.
Champ Description Nom Un nom convivial pour votre API. C’est le nom qui s’affichera dans votre liste d’API Auth0. Identifiant Un identifiant logique pour votre API. Nous vous recommandons de mettre cet identifiant au format d’une URL https://your-api-gateway.Algorithme de signature L’algorithme qu’Auth0 doit utiliser pour signer le jeton d’accès émis. Pour en savoir plus, consultez Signing Algorithms.

Importer et déployer l’API AWS API Gateway
Cette partie du tutoriel a été adaptée de l’exemple officiel d’AWS. Veuillez consulter cet exemple pour des remarques et des explications plus détaillées.
- Importer une API dans API Gateway
- Tester l’importation d’une API
- Déployer une API afin de l’utiliser avec n’importe quelle application frontale
- Tester le déploiement d’une API
Importer et configurer l’API Pets
- Connectez-vous à votre compte AWS, puis, dans le menu déroulant Services de la barre de navigation supérieure, accédez à la console API Gateway.
-
Si vous avez déjà créé une API, accédez simplement à la console API Gateway et cliquez sur Create API. Vous aurez alors l’option de créer l’Example API dans le formulaire Create new API.
Si vous n’avez jamais créé d’API avec API Gateway, l’écran suivant s’affichera. Cliquez sur Get Started pour continuer.
Une fenêtre contextuelle de bienvenue à API Gateway s’affichera. Cliquez sur OK pour continuer.

-
Dans le formulaire Create new API, vous verrez que l’Example API est sélectionnée par défaut et qu’un exemple d’API est déjà défini dans l’éditeur. Nous utiliserons cette API pour la suite du tutoriel; commencez donc le processus de création de l’API en cliquant sur Import.
Une fois l’opération terminée, AWS affiche un message indiquant que votre API a été créée et renseignée avec les données fournies. Notez que l’API comprend déjà des méthodes associées (

GETetPOST, notamment). Vous pouvez afficher les détails d’une méthode, modifier sa configuration ou tester son appel en cliquant sur son nom dans l’arborescence des ressources.
Testez votre API
/pets. La fenêtre Method Execution s’ouvre alors et fournit un aperçu de la structure et du comportement de la méthode POST :
- Method Request et Method Response : l’interface de l’API avec le front-end
- Integration Request et Integration Response : l’interface de l’API avec le back-end
-
Cliquez sur Test (affiché dans le volet Client situé au milieu de la page). Vous serez redirigé vers la page
/pets - POST - Method Test. Faites défiler jusqu’au bas de la page et entrez l’extrait suivant dans Request Body :Le corps de la requête contient les attributs de l’animal que vous voulez ajouter à la base de données, ainsi que son prix.
-
Cliquez sur Test pour continuer. Les résultats du test s’affichent à droite de la page.

Déployer l’API
- Dans le menu Actions, sélectionnez Deploy API.
-
Entrez les valeurs suivantes, puis cliquez sur Deploy.
Paramètre Valeur Deployment stage Choisissez [New Stage]Stage name Entrez un nom pour votre stage Stage description Entrez une description pour votre stage Deployment description Entrez une description pour le déploiement de votre API
Tester le déploiement
-
En haut de la fenêtre Test Stage Editor se trouve une bannière bleue avec votre Invoke URL. Il s’agit de l’URL utilisée pour invoquer le point de terminaison
GETde votre API. Cliquez sur le lien pour envoyer la requête de méthodeGET /dans un navigateur. Vous devriez obtenir la réponse de réussite suivante :
-
Dans la page Stages, développez l’arborescence sous Test. Cliquez sur GET sous
/pets/{petId}.
-
Vous verrez une Invoke URL affichée dans la bannière bleue en haut de la fenêtre. La dernière partie,
{petID}, correspond à une variable de chemin. Remplacez cette variable par1, puis accédez à la nouvelle URL dans votre navigateur. Vous devriez recevoir une réponse HTTP 200 avec la charge utile JSON suivante :
- API Gateway vérifie qu’un autorisateur personnalisé est correctement configuré.
- API Gateway appelle l’autorisateur personnalisé (qui est une fonction Lambda) avec le jeton d’autorisation.
- Si le jeton d’autorisation est valide, l’autorisateur personnalisé renvoie les politiques AWS Identity and Access Management (IAM) appropriées.
- API Gateway utilise les politiques renvoyées à l’étape 3 pour autoriser la requête.
- Décompressez le dossier contenant les exemples de fichiers téléchargés ci-dessus à l’emplacement de votre choix, puis accédez-y à l’aide de la ligne de commande.
-
Dans le dossier de l’exemple, exécutez
npm installpour installer les modules Node.js requis pour le déploiement; AWS exige que ces fichiers soient inclus dans l’ensemble que vous téléverserez à AWS à une étape ultérieure. -
Configurez votre environnement local avec un fichier
.env. Vous pouvez copier le fichier.env.sample(en le renommant en même temps.env) à l’aide decp .env.sample .env. Apportez les modifications suivantes :Par exemple, une fois terminé, le contenu de votre fichierParamètre Valeur TOKEN_ISSUERL’émetteur du jeton. Si Auth0 est l’émetteur du jeton, utilisez https://{yourDomain}/. Assurez-vous d’inclure la barre oblique finale.JWKS_URIL’URL du point de terminaison JWKS. Si Auth0 est l’émetteur du jeton, utilisez https://{yourDomain}/.well-known/jwks.jsonAUDIENCELa valeur identifier de l’API que vous avez créée dans la section Créer une API Auth0 ci-dessus. .envdevrait ressembler à ceci :
- Vous pouvez obtenir un jeton de test pour votre API en accédant à Auth0 Dashboard > Applications > APIs, en sélectionnant votre API, puis Test.
- Créez un fichier local
event.jsoncontenant le jeton. Vous pouvez copier l’exemple de fichier (exécutezcp event.json.sample event.json). RemplacezACCESS_TOKENpar votre jeton JWT etmethodArnpar la valeur ARN appropriée pour la méthodeGETde votre API.
methodArn :
- Dans la console API Gateway, ouvrez l’API PetStore.
- Dans le volet de navigation de gauche, sélectionnez Resources.
- Dans le panneau central Resources, développez l’arborescence des ressources. Sous
/pets, sélectionnez GET. - Dans la zone Method Request, vous verrez l’ARN.
- Exécutez le test avec
npm test.
Effect est Allow, votre autorisateur aurait autorisé l’appel vers API Gateway.
Pour en savoir plus, consultez Lambda-local sur NPM.
Créer le rôle IAM
- Ouvrez une session dans AWS, puis accédez à la console IAM. Dans le volet de navigation de gauche, sélectionnez Roles.
- Sélectionnez Create new role.
- Sous AWS service, sélectionnez la ligne AWS Lambda, puis Next: Permissions.
- À l’écran Attach permissions policy, sélectionnez AWSLambdaRole. Vous pouvez utiliser le filtre fourni pour réduire la liste d’options. Sélectionnez Next: Tags, puis Next: Review pour continuer.
-
À l’écran Review, indiquez un Role name, par exemple
Auth0Integration. Laissez les autres champs tels quels. Sélectionnez Create role. - Une fois le rôle créé, vous serez redirigé vers la page Roles d’IAM. Sélectionnez votre nouveau rôle.
- Dans la page Summary du rôle que vous venez de créer, sélectionnez l’onglet Trust relationships.
-
Sélectionnez Edit trust relationship, puis remplissez le champ Policy Document avec l’extrait JSON suivant :
- Cliquez sur Update Trust Policy.
-
Vous serez redirigé vers la page Summary. Copiez la valeur Role ARN pour l’utiliser plus tard.

-
Créez une archive que vous pourrez téléverser vers AWS en exécutant
npm run bundle. Cette commande génère l’archivecustom-authorizer.zipcontenant le code source, la configuration et les modules Node requis par AWS Lambda. - Accédez à la console Lambda, puis cliquez sur Create function.
-
Dans la page Select blueprint, cliquez sur Author from scratch pour créer une fonction vide. Sous Basic information, indiquez les valeurs des paramètres suivants :
Paramètre Valeur Name Un nom pour votre fonction Lambda, par exemple jwtRsaCustomAuthorizerDescription Une description de votre fonction Lambda (facultatif) Runtime Sélectionnez Node.js 10.x - Cliquez sur Create Function pour continuer.
- Dans la page Configuration de votre fonction, faites défiler l’écran jusqu’à la section Function Code.
- Sélectionnez Upload a .ZIP file comme Code entry type.
-
Cliquez sur Upload et sélectionnez l’archive
custom-authorizer.zipque vous avez créée précédemment. -
Créez ensuite les trois Environment variables suivantes. Notez que ces renseignements sont identiques à ceux du fichier
.env.Paramètre Valeur TOKEN_ISSUERL’émetteur du jeton. Si Auth0 est l’émetteur du jeton, utilisez https://{yourDomain}/JWKS_URIL’URL du point de terminaison JWKS. Si Auth0 est l’émetteur du jeton, utilisez https://{yourDomain}/.well-known/jwks.jsonAUDIENCELa valeur identifier de l’API que vous avez créée à l’étape 1. - Dans la section Execution role, sélectionnez Use an existing role, puis choisissez comme Existing role le rôle IAM que vous avez créé précédemment.
- Sous Basic settings, réglez Timeout à 30 secondes.
- Cliquez sur Save.
- Pour tester la fonction Lambda que vous venez de créer, cliquez sur Test dans le coin supérieur droit.
-
Copiez le contenu de votre fichier
event.jsondans le formulaire Configure test event. Vous pouvez utiliser le modèle d’événement par défaut « Hello World ». - Cliquez sur Create.
-
Exécutez votre test en le sélectionnant, puis en cliquant sur Test. Si le test réussit, vous verrez : « Execution result: succeeded ». En développant la fenêtre de sortie, vous devriez voir un message semblable à celui que vous avez reçu après la réussite de votre test local.

- Retournez à la console API Gateway et ouvrez l’API PetStore que nous avons créée plus tôt.
-
Dans le menu de navigation de gauche, ouvrez Authorizers et sélectionnez Create New Authorizer, puis définissez les paramètres suivants et cliquez sur Create.
Paramètre Valeur Nom jwt-rsa-custom-authorizerType Sélectionnez Lambda Région Lambda Utilisez la région de la fonction Lambda que vous avez créée précédemment Fonction Lambda jwtRsaCustomAuthorizerRôle d’invocation Lambda L’ARN du rôle IAM que vous avez copié ci-dessus Charge utile d’événement Lambda Sélectionnez Token Source du jeton AuthorizationValidation du jeton ^Bearer [-0-9a-zA-z\.]*$TTL (secondes) 3600 -
Une fois l’autorisateur créé par AWS et la page actualisée, testez votre autorisateur en cliquant sur Test et en fournissant le jeton Auth0 (
Bearer ey...) que vous avez utilisé précédemment. Si le test réussit, vous verrez une réponse semblable à celle-ci.
-
Ouvrez une session dans AWS, puis accédez à la console API Gateway.
Les autorisateurs personnalisés sont définis pour chaque méthode. Si vous voulez sécuriser plusieurs méthodes à l’aide d’un seul autorisateur, vous devrez répéter les instructions suivantes pour chaque méthode.
-
Ouvrez l’API PetStore que nous avons créée à l’étape 2 de ce tutoriel. Dans l’arborescence Resource du volet central, sélectionnez la méthode GET sous la ressource
/pets.
- Sélectionnez Method Request.
-
Sous Settings, cliquez sur l’icône pencil à droite de Authorization, puis choisissez l’autorisateur personnalisé
jwt-rsa-custom-authorizerque vous avez créé à l’étape 3. -
Cliquez sur l’icône check mark pour enregistrer votre choix d’autorisateur personnalisé. Assurez-vous que le champ API Key Required est défini sur
false.
Déployer l’API
- Dans le menu Actions, sélectionnez Deploy API.
-
Saisissez les valeurs suivantes, puis cliquez sur Deploy :
Paramètre Valeur Deployment stage Choisissez [New Stage]Stage name Saisissez un nom pour votre stage Stage description Saisissez une description pour votre stage Deployment description Saisissez une description pour le déploiement de votre API
Testez votre déploiement
GET vers l’Invoke URL que vous avez notée à l’étape précédente. Si ce test échoue, vérifiez que vous avez bien obtenu le jeton d’accès JWT.
Pour en savoir plus, consultez Obtenir des jetons d’accès.