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

Dernière mise à jour : 08/05/2020

Les appels vers mon API Amazon API Gateway renvoient des erreurs 401 (Non autorisé) après la création d'un mécanisme d'autorisation Lambda. Pourquoi ?

Brève description

Remarque : les causes d'apparition des erreurs 401 (Non autorisé) d'API Gateway sont multiples. Cet article traite 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 (Non autorisé). En ce qui concerne les mécanismes d'autorisation basés sur des jetons, l'erreur se produit généralement lorsqu'un jeton requis est manquant ou bien invalidé par l'expression de validation du mécanisme d'autorisation. Dans le cas des mécanismes d'autorisation basés sur les paramètres de demande, l'erreur intervient typiquement lorsque les sources d'identité configurées sont manquantes, nulles, vides ou non valides.

Pour plus d'informations sur les types de mécanismes d'autorisation Lambda, consultez la section Utilisez des mécanismes d'autorisation API Gateway Lambda.

Solution

Vérifiez la configuration de votre mécanisme d'autorisation Lambda dans la console API Gateway pour déterminer quels éléments doivent être inclus dans les demandes envoyées à votre API. Ensuite, testez le mécanisme d'autorisation en appelant votre API avec l'en-tête, la valeur de jeton ou les sources d'identité requis.

Astuce : si vous n'êtes pas certain de la méthode à suivre pour configurer un mécanisme d'autorisation Lambda, vous pouvez utiliser les exemples de configuration du Guide du développeur d'API Gateway. Pour obtenir des instructions, consultez la section EXEMPLE : Création d'une fonction de mécanisme d'autorisation Lambda par jeton ou EXEMPLE : Création d'une fonction de mécanisme d'autorisation Lambda par demande.

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

  1. Dans la console API Gateway, dans le volet API, choisissez le nom de votre API.
  2. Dans le volet de navigation de gauche, sous votre API, choisissez Authorizers (Mécanismes d'autorisation).
  3. Vérifiez les paramètres suivants :
    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). Celle-ci doit être utilisée en tant qu'en-tête de demande. 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 choisi 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.
    Si l'option Lambda Event Payload (Charge utile d'événement Lambda) est définie sur Request (Demande), vérifiez les 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. 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.
  4. Si la mise en cache des autorisations est configuré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, déployez votre API afin de valider ces changements.

Test du mécanisme d'autorisation Lambda

Effectuez un test d'appel de votre API, en veillant à formuler la demande selon la configuration de votre mécanisme d'autorisation Lambda.

Console API Gateway

  1. Dans la console API Gateway, accédez à la page Authorizers (Mécanismes d'autorisation) puis choisissez Test pour votre mécanisme d'autorisation.
  2. Dans la boîte de dialogue Test Authorizer (Tester le mécanisme d'autorisation), effectuez l'une des actions suivantes :
    Pour un mécanisme d'autorisation par jeton, saisissez une valeur de jeton d'autorisation valide en regard de {headerName} (en-tête).
    Pour un mécanisme d'autorisation basé sur les paramètres de demande, sous Request Parameters (Paramètres de demande), saisissez les valeurs correspondant à l'ensemble des sources d'identité configurées pour le mécanisme d'autorisation.
  3. Sélectionnez Test.

Lorsque l'autorisation aboutit, vous obtenez le code de réponse : 200.

Postman ou curl

Vous pouvez également tester votre API à l'aide de l'application Postman ou de la commande curl. Pour obtenir des instructions détaillées sur l'utilisation de Postman, consultez la section Appelez une API avec les mécanismes d'autorisation API Gateway Lambda. Pour plus d'informations sur curl, consultez le site Web du projet curl.

Remarque : si, avant le test, vous avez désactivé la mise en cache des autorisations de votre mécanisme d'autorisation Lambda, vous pouvez maintenant la réactiver. Pensez ensuite à redéployer votre API.