Quelle est la raison pour laquelle je reçois des erreurs 401 Unauthorized (Non autorisé) d'API Gateway après avoir créé un mécanisme d'autorisation Lambda ?

Dernière mise à jour : 20/09/2022

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

Brève description

Remarque : API Gateway peut renvoyer des erreurs 401 Unauthorized (non autorisé) pour des nombreuses raisons. Cet article traite uniquement des erreurs de réponse 401 Unauthorized (non autorisé) renvoyées par API Gateway sans utiliser la fonction d'autorisation Lambda.

Lorsqu'une API API Gateway associée à un mécanisme d'autorisation Lambda reçoit une demande non autorisée, API Gateway 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 demande

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.

Afin de résoudre ce type d'erreur, vérifiez quelles informations doivent être incluses dans les demandes 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 : vous pouvez accéder à des exemples de configurations de mécanisme d'autorisation Lambda en consultant les sections Créer une fonction de mécanisme d'autorisation Lambda par jeton et Création d'une fonction de mécanisme d'autorisation Lambda par demande.

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, 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 jetons 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 demande

Si l'option Lambda Event Payload (Charge utile d'événement Lambda) est définie sur Request (demande), vérifiez les Identity Sources (Sources d'identité) configurées. Les sources d'identité peuvent être des en-têtes, des chaînes d'interrogation, des chaînes d'interrogation à valeurs multiples, des variables d'étape ou des $context variables.

Important : lorsque la mise en cache des autorisations est activée, les demandes 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 (par exemple,« Autorisations mises en cache pendant 1 minute »), 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, 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

1.    Choisissez Test sans donner de valeur pour Authorization Token. API Gateway renvoie un code de réponse : 401 car le jeton d'autorisation est vide.

2.    Si la validation du jeton avec l'expression régulière \ w{5} est configurée, entrez une valeur non valide telle que « abc123 » comme jeton d'autorisation. Ensuite, sélectionnez Test. API Gateway renvoie un code de réponse : 401 car le jeton d'autorisation ne répond pas à l'expression de validation du jeton.

3.    Pour la valeur Authorization Token, saisissez allow(autoriser), puis choisissez Test(tester). API Gateway renvoie un message Code de réponse : 200.

-ou-

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

1.    Supprimez les paramètres de demande et choisissez Test. API Gateway renvoie un code de réponse : 401 car les paramètres de demande sont manquants.

2.    Pour Request Parameters, saisissez headerValue1, queryValue1 et stageValue1, puis choisissez Test. 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 la commande 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 celui-ci. Si vous réactivez la mise en cache des autorisations, assurez-vous de redéployer votre API afin de valider les modifications.
  • Si vous recevez des erreurs CORS (Cross-Origin Resource Sharing) de la part du mécanisme d'autorisation Lambda, vous pouvez ajouter les en-têtes CORS pour les réponses d'API Gateway DEFAULT 4XX. Pour plus d'informations, veuillez consulter la section Comment résoudre les erreurs CORS à partir de mon API API Gateway ?