Comment puis-je résoudre les erreurs HTTP 403 depuis API Gateway ?
Lorsque j’appelle mon API Amazon API Gateway, je reçois une erreur 403.
Brève description
Lorsqu'un client ne peut pas accéder à une URL valide, vous obtenez un code de réponse HTTP 403. Le serveur comprend la requête, mais ne peut y répondre en raison de problèmes côté client.
Les API API Gateway peuvent renvoyer des réponses 403 pour les raisons suivantes :
Problème | En-tête de réponse | Message d’erreur | Cause racine |
Accès refusé | « x-amzn-errortype » = « AccessDeniedException » | « User is not authorized to access this resource with an explicit deny » | L’appelant n’est pas autorisé à accéder à une API qui utilise un mécanisme d'autorisation Lambda pour API Gateway. |
Accès refusé | « x-amzn-errortype » = « AccessDeniedException » | « Utilisateur : <user-arn> n’est pas autorisé à exécuter : execute-api:Invoke sur la ressource : <api-resource-arn> with an explicit deny » | L’appelant n’est pas autorisé à accéder à une API qui utilise l’autorisation AWS Identity and Access Management (IAM). Ou l'API est attachée à une stratégie de ressources qui refuse explicitement l'accès à l'appelant. Pour plus d'informations, consultez la section Authentification et stratégie de ressources IAM. |
Accès refusé | « x-amzn-errortype » = « AccessDeniedException » | « Utilisateur : anonyme n’est pas autorisé à exécuter : execute-api:Invoke sur la ressource :<api-resource-arn> » | L’appelant n’est pas autorisé à accéder à une API qui utilise une autorisation IAM. Ou l'API est attachée à une stratégie de ressources qui n'autorise pas explicitement l'appelant à invoquer l'API. Pour plus d'informations, consultez la section Authentification et stratégie de ressources IAM. |
Accès refusé | « x-amzn-errortype » = « AccessDeniedException » | « The security token included in the request is invalid. » | L’appelant a utilisé des clés IAM non valides pour accéder à une API qui utilise l’autorisation IAM. |
Jeton d’authentification manquant | « x-amzn-errortype » = « MissingAuthenticationTokenException » | « Jeton d’authentification manquant » | Un jeton d’authentification n’a pas été trouvé dans la demande. |
Le jeton d’authentification a expiré | « x-amzn-errortype » = « InvalidSignatureException » | « Signature expired » | Le jeton d’authentification de la requête a expiré. |
La clé API n’est pas valide | « x-amzn-errortype » = « ForbiddenException » | « Forbidden » | L'appelant a utilisé une clé API par rapport à une méthode qui requiert une clé API, mais la clé API n'est pas correcte. Ou la clé API n'est pas associée à un plan d'utilisation qui est associé à l'environnement. Ou la clé API est désactivée ou n'existe pas. |
La signature n’est pas valide | « x-amzn-errortype » = « InvalidSignatureException » | « La signature de la demande calculée ne correspond pas à la signature que vous avez fournie. The security token included in the request is invalid. » | La signature de la requête ne correspond pas à la signature sur le serveur lorsque l'appelant accède à une API qui utilise l'autorisation IAM. |
AWS WAF filtré | « x-amzn-errortype » = « ForbiddenException » | « Forbidden » | Le filtrage du pare-feu d’applications Web bloque la requête lorsqu’AWS WAF est activé dans l’API. |
Le chemin de ressource n’existe pas | « x-amzn-errortype » = « MissingAuthenticationTokenException » | « Jeton d’authentification manquant » | Une requête sans en-tête « Autorisation » est envoyée à un chemin de ressource d’API qui n’existe pas. Pour plus d’informations, consultez la section Comment puis-je résoudre les erreurs 403 « Missing Authentication Token » du point de terminaison API REST API Gateway ? |
Le chemin de ressource n’existe pas | « x-amzn-errortype » = « IncompleteSignatureException » | « L’en-tête d’autorisation requiert le paramètre « Informations d’identification. » L’en-tête d’autorisation requiert le paramètre « Signature ». L’en-tête d’autorisation requiert le paramètre « SignedHeaders ». L’en-tête d’autorisation requiert l’existence d’un en-tête « X-Amz-Date » ou « Date ». Autorisation=autoriser » | Une requête avec un en-tête « Autorisation » est envoyée à un chemin de ressource d’API qui n’existe pas. |
Utilise de manière incorrecte les noms DNS publics pour invoquer une API privée | « x-amzn-errortype » = « ForbiddenException » | « Forbidden » | Vous avez utilisé incorrectement des noms DNS publics pour invoquer une API privée depuis un Amazon Virtual Private Cloud (Amazon VPC). Par exemple : l'en-tête « Host » ou « x-apigw-api-id » est manquant dans la requête. Pour plus d’informations, consultez la section Invoquer une API privée à l'aide de noms d'hôtes DNS publics spécifiques au point de terminaison. |
Utilise le point de terminaison execute-api par défaut pour invoquer une API REST qui comporte un nom de domaine personnalisé | « x-amzn-errortype » = « ForbiddenException » | « Forbidden » | L'appelant utilise le point de terminaison execute-api par défaut pour invoquer une API REST après que vous avez désactivé le point de terminaison par défaut. Pour plus d'informations, consultez la section Désactiver le point de terminaison par défaut pour les API REST |
Utilise un certificat client non valide pour invoquer un nom de domaine personnalisé API Gateway qui requiert un TLS mutuel | « x-amzn-errortype » = « ForbiddenException » | « Forbidden » | Le truststore du nom de domaine personnalisé n'émet pas le certificat client qui figure dans la requête d'API, ou le certificat n'est pas valide. Pour plus d’informations, consultez la section Comment puis-je résoudre les erreurs HTTP 403 Interdit générées par un nom de domaine personnalisé API Gateway qui requiert un TLS mutuel ? |
Invocation d’un nom de domaine personnalisé sans mappage du chemin de base | « x-amzn-errortype » = « ForbiddenException » | « Forbidden » | L'appelant invoque un domaine personnalisé et ne mappe pas de chemin de base à une API. Pour plus d'informations, consultez la section Nom de domaine personnalisé pour les API REST dans API Gateway. |
Invocation d’une API avec un domaine personnalisé activée lorsque l’URL du domaine inclut l’environnement | « x-amzn-errortype » = « MissingAuthenticationTokenException » | « Jeton d’authentification manquant » | Un mappage d’API spécifie une API, un environnement et éventuellement un chemin à utiliser pour le mappage. Ainsi, lorsque l’environnement d'une API est mappé à un domaine personnalisé, il n'est plus nécessaire de l'inclure dans l'URL. Pour plus d'informations, consultez la section Mapper les environnements d’API à un nom de domaine personnalisé pour les API REST. |
L’environnement dans l’URL de la requête n’est pas valide | « x-amzn-errortype » = « ForbiddenException » | « Interdit » | L’URL de la requête de l’appelant inclut un environnement qui n’existe pas. Pour plus d'informations, consultez la section Invoquer des API REST dans API Gateway. |
Résolution
Identifier la cause de l’erreur
Si l'erreur 403 est signalée à partir d'autres ressources, comme dans les exemples suivants, il peut y avoir une autre cause à l'erreur :
- Si l'erreur est signalée dans un navigateur Web, un paramètre de proxy incorrect pourrait ne pas autoriser l'accès HTTP.
- Si un autre service AWS se trouve devant l'API, tel qu'Amazon CloudFront, le service peut rejeter la requête.
Pour identifier la cause de l'erreur, configurez la journalisation des accès Amazon CloudWatch pour votre API. Puis, consultez les événements de journaux de votre API dans CloudWatch pour déterminer si les requêtes atteignent l'API.
Remarque : Les API HTTP ne prennent pas en charge la journalisation des exécutions.
Pour résoudre les erreurs 403 renvoyées par un nom de domaine personnalisé qui requiert le TLS mutuel et invoque une API HTTP, vous devez procéder comme suit :
- Créez un nouveau mappage d'API pour tester l'invocation de l'API REST pour votre nom de domaine personnalisé.
- Pour identifier la cause des erreurs, consultez les événements de journaux de votre API REST dans CloudWatch.
- Après avoir identifié et résolu l'erreur, réacheminez le mappage d'API vers votre API HTTP.
Confirmez que la ressource demandée existe dans la définition de l’API
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l’AWS CLI.
Utilisez la console API Gateway ou l'AWS CLI pour vérifier les configurations suivantes :
- Vous avez déployé l’API avec la dernière définition de l’API.
- La ressource demandée existe dans la définition de l’API.
Utiliser la commande curl pour obtenir les détails de la requête et de la réponse
Si vous pouvez reproduire l'erreur, utilisez la commande curl -v pour obtenir de plus amples détails entre le client et l'API :
curl -X HTTP_VERB -v https://{api_id}.execute-api.{region}.amazonaws.com/{stage_name}/{resource_name}
Vérifier que l’en-tête de la requête est correct
Si l’erreur est due à une clé API non valide, vérifiez que l’en-tête « x-api-key » a été envoyé dans la requête. Si l'en-tête n'est pas inclus ou n'est pas correct, mettez à jour l'en-tête de la requête.
Vérifier que le paramètre DNS sur les points de terminaison de VPC Amazon est correctement défini
Remarque : Les tâches suivantes s'appliquent aux API que vous invoquez depuis un Amazon VPC ne possédant qu'un seul point de terminaison de VPC d'interface.
Vérifiez que le paramètre DNS du point de terminaison d'interface est correctement défini en fonction du type d'API que vous utilisez.
Pour invoquer une API régionale depuis un Amazon VPC, les noms DNS privés doivent être désactivés sur le point de terminaison d’interface. Un DNS public peut ensuite résoudre le nom d'hôte du point de terminaison. Pour en savoir plus, consultez la section Créer une API privée.
Pour utiliser le nom DNS privé de l'API afin d'invoquer une API privée depuis un Amazon VPC, activez les noms DNS privés sur le point de terminaison. Les ressources du sous-réseau local Amazon VPC peuvent ensuite résoudre le nom d'hôte du point de terminaison d'interface.
Remarque : Si vous utilisez l'une des options suivantes pour invoquer l'API privée, il n’est pas nécessaire de configurer le nom DNS public de l'API privée ou un alias Amazon Route 53.
Examiner la stratégie de ressources de l’API
Examinez la stratégie de ressources de votre API pour vérifier les configurations suivantes :
- Pour les API que vous invoquez depuis un Amazon VPC avec un point de terminaison de VPC d'interface : La stratégie de ressources de l'API accorde au VPC Amazon ou au point de terminaison d'interface l'accès à l'API.
- Les spécifications et la mise en forme des ressources de la stratégie de ressources sont correctes.
Remarque : Lorsque vous enregistrez une stratégie de ressources, les spécifications des ressources ne sont pas validées. Pour obtenir des exemples, consultez la section Exemples de stratégies de ressources API Gateway. - L’appelant est autorisé à invoquer le point de terminaison d’API selon le type d’authentification que vous avez défini pour l’API. Pour plus d’informations, consultez la section Comment les stratégies de ressources API Gateway affectent le flux de travail d’autorisation.
Examiner les messages de requête et de réponse HTTP
Reproduisez l’erreur dans un navigateur Web. Puis, utilisez les outils réseau du navigateur pour capturer les messages de requête et de réponse HTTP et analysez-les pour déterminer où l’erreur s’est produite.
Remarque : pour une analyse hors ligne, enregistrez les messages dans un fichier HTTP Archive (HAR).
Informations connexes
Projet curl sur le site Web de curl
Vidéos associées
Contenus pertinents
- demandé il y a 9 moislg...
- demandé il y a 7 jourslg...
- demandé il y a 4 moislg...
- demandé il y a 10 moislg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans