Pourquoi est-ce que je reçois des erreurs 401 Unauthorized (non autorisé) d'API Gateway après avoir créé un mécanisme d'autorisation Lambda ?

Date de la dernière mise à jour : 04/11/2021

Mon API Amazon API Gateway renvoie des erreurs 401 Unauthorized (non autorisé) après la création d'un mécanisme d'autorisation Lambda. Quelle est la cause de ce problème, et comment puis-je le résoudre ?

Brève description

Remarque : API Gateway peut renvoyer les erreurs 401 Unauthorized (non autorisé) pour diverses raisons. Cet article aborde uniquement des erreurs 401 liées aux mécanismes d'autorisation Lambda.

Lorsqu'une API API Gateway associée à un mécanisme d'autorisation Lambda reçoit une demande non autorisée, le service renvoie une réponse 401 Unauthorized (non autorisé).

Pour les mécanismes d'autorisation Lambda basés sur des jetons

Des erreurs 401 Unauthorized (non autorisé) se produisent généralement lorsqu'un jeton requis est manquant ou n'est pas validé par l'expression de validation du jeton du mécanisme d'autorisation.

Pour les mécanismes d'autorisation Lambda basés sur des paramètres de requête

Des erreurs 401 Unauthorized (non autorisé) se produisent généralement lorsque les sources d'identité configurées sont manquantes, nulles, vides ou non valides.

Pour résoudre ce type d'erreur, vérifiez quelles informations doivent être incluses dans les requêtes adressées à votre API en examinant la configuration de votre mécanisme d'autorisation Lambda. Ensuite, testez le mécanisme d'autorisation en effectuant une requête à votre API avec l'en-tête, la valeur de jeton ou les sources d'identité requis.

Remarque : Pour obtenir des exemples de configurations d'autorisation Lambda, veuillez consulter les rubriques Créer une fonction d'autorisation Lambda basée sur des jetons et Créer une fonction d'autorisation Lambda basée sur les requêtes.

Solution

Vérifier la configuration du mécanisme d'autorisation Lambda

1.    Ouvrez la console API Gateway.

2.    Dans le volet API, choisissez le nom de votre API.

3.    Dans le volet de navigation de gauche, sous le nom de votre API, choisissez Mécanisme d'autorisation. La page Mécanisme d'autorisation s'ouvre.

4.    Vérifiez la configuration du mécanisme d'autorisation pour l'un des éléments suivants en fonction de votre cas d'utilisation :

Pour les mécanismes d'autorisation Lambda basés sur des jetons

Si l'option Lambda Event Payload (Charge utile d'événement Lambda) est définie sur Token (Jeton), vérifiez la valeur de Token Source (Source du jeton). La valeur Source du jeton doit être utilisée comme en-tête de requête dans les appels à votre API.

Important : si vous avez saisi une expression régulière dans le champ Token Validation (Validation du jeton), API Gateway l'utilisera à cette fin. Par exemple, si vous avez saisi l'expression régulière \w{5}, seules les valeurs de jeton comportant des chaînes alphanumériques de 5 caractères seront validées.

-ou-

Pour les mécanismes d'autorisation Lambda basés sur des paramètres de requête

Si l'option Lambda Event Payload (Charge utile d'événement Lambda) est définie sur Request (Requête), vérifiez les Identity Sources (Sources d'identité) configurées. Il peut s'agir d'en-têtes, de chaînes de requête, de variables d'étape ou de variables $context.

Important : lorsque la mise en cache des autorisations est activée, les requêtes adressées à votre API sont validées à partir de l'ensemble des sources d'identité configurées.

5.    Si la mise en cache des autorisations est activée (« Authorization cached for {0} minutes » – « Autorisations mises en cache pendant {0} minutes »), désactivez-la afin de procéder aux tests de l'étape suivante.

Pour plus d'informations, consultez la section Configuration d'un mécanisme d'autorisation Lambda à l'aide de la console API Gateway.

Déployer votre API

Si vous avez modifié la configuration de votre mécanisme d'autorisation Lambda ou tout autre paramètre d'API, redéployez votre API afin de valider ces changements.

Testez votre mécanisme d'autorisation Lambda

Pour tester votre mécanisme d'autorisation Lambda, effectuez un appel test à votre API en effectuant l'une des opérations suivantes :

Important : assurez-vous de formater la requête en fonction de la configuration de votre mécanisme d'autorisation Lambda.

Pour tester un mécanisme d'autorisation Lambda à l'aide de la console API Gateway

1.    Ouvrez la console API Gateway.

2.    Dans le volet API, choisissez le nom de votre API.

3.    Dans le volet de navigation de gauche, sous le nom de votre API, choisissez Mécanisme d'autorisation.

4.    Sur la page Mécanisme d'autorisation, choisissez Test pour votre mécanisme d'autorisation.

5.    Dans la boîte de dialogue Test Authorizer (Tester le mécanisme d'autorisation), procédez à l'une des opérations suivantes en fonction de votre cas d'utilisation :

Pour les mécanismes d'autorisation Lambda basés sur des jetons

Pour la valeur {HeaderName} (en-tête), entrez un jeton d'autorisation valide.

-ou-

Pour les mécanismes d'autorisation Lambda basés sur des paramètres de requête

Sous Paramètres de demande, saisissez des valeurs pour toutes les sources d'identité configurées pour votre mécanisme d'autorisation.

6.    Choisissez Test.

Si la demande est correctement formatée, API Gateway renvoie un message Code de réponse : 200.

Pour tester un mécanisme d'autorisation Lambda à l'aide de Postman ou curl

Pour obtenir des instructions sur la façon de tester un mécanisme d'autorisation Lambda à l'aide de l'application Postman, veuillez consulter la rubrique Appel d'une API avec des mécanismes d'autorisation Lambda API Gateway.

Pour plus d'informations sur curl, consultez le site Web du projet cURL.

Remarque : si vous avez désactivé la mise en cache des autorisations de votre mécanisme d'autorisation Lambda avant le test, vous pouvez la réactiver après ce dernier. Si vous réactivez la mise en cache des autorisations, assurez-vous de redéployer votre API pour valider les modifications.