Wie behebe ich HTTP-403-Forbidden-Fehler des API Gateways?

Letzte Aktualisierung: 19.05.2021

Wenn ich meine Amazon API Gateway-API aufrufe, erhalte ich einen 403-Forbidden-Fehler. Wie kann dieser Fehler behoben werden?

Kurzbeschreibung

Ein HTTP-403-Antwortcode bedeutet, dass einem Client der Zugriff auf eine gültige URL untersagt ist. Der Server versteht die Anfrage, kann die Anfrage jedoch aufgrund clientseitiger Probleme nicht erfüllen.

API-Gateway-APIs können aus einem der folgenden Gründe 403-Forbidden-Antworten zurückgeben:

Problem Antwort-Header Fehler-Meldung Details
Zugriff verweigert/td> "x-amzn-ErrorType" = "AccessDeniedException" "Der Benutzer ist nicht autorisiert, auf diese Ressource zuzugreifen, mit einer expliziten Zugriffsverweigerung" Der Aufrufer ist nicht autorisiert, auf die API zuzugreifen, die den Lambda-Genehmiger nutzt.
Zugriff verweigert "x-amzn-ErrorType" = "AccessDeniedException" "Benutzer: <user-arn> ist nicht autorisiert,: execute-api:die Ressource aufzurufen: <api-resource-arn> mit einer expliziten Zugriffsverweigerung"

Der Aufrufer ist nicht autorisiert, auf eine API zuzugreifen, die die AWS-Identity-and-Access-Management(IAM)-Autorisierung nutzt. Oder die API hat eine angehängte Ressourcenrichtlinie, die dem Aufrufer explizit den Zugriff verweigert.

Weitere Informationen finden Sie unter IAM-Authentifizierung und Ressourcenrichtlinie.

Zugriff verweigert "x-amzn-ErrorType" = "AccessDeniedException" "Benutzer: anonym ist nicht berechtigt, Folgendes auszuführen:execute-api:Invoke on resource: <api-resource-arn>"

Der Aufrufer ist nicht berechtigt, auf eine API zuzugreifen, die die IAM-Autorisierung verwendet. Oder die API hat eine angefügte, Ressourcenrichtlinie die es dem Anrufer nicht ausdrücklich erlaubt, die API aufzurufen.

Weitere Informationen finden Sie unter IAM-Authentifizierungs- und Ressourcenrichtlinie.

Zugriff verweigert. "x-amzn-ErrorType" = "AccessDeniedException" "Das in der Anfrage enthaltene Sicherheitstoken ist ungültig." Der Aufrufer hat ungültige IAM-Schlüssel verwendet, um auf eine API zuzugreifen, die die IAM-Autorisierung verwendet.
Fehlendes Authentifizierungstoken "x-amzn-ErrorType" = "MissingAuthenticationTokenException" "Fehlendes Authentifizierungstoken" In der Anfrage wurde kein Authentifizierungstoken gefunden.
Authentifizierungstoken abgelaufen "x-amzn-ErrorType" = "InvalidSignatureException" "Das Authentifizierungstoken in der Anfrage ist abgelaufen.
API-Schlüssel ist ungültig "x-amzn-ErrorType" = "ForbiddenException" " Ungültige API-Schlüsselkennung angegeben" Der Aufrufer hat einen ungültigen API-Schlüssel für eine Methode verwendet, die einen API-Schlüssel erfordert.
Signatur ist ungültig. "x-amzn-ErrorType" = "InvalidSignatureException" "Die von uns berechnete Anfragesignatur stimmt nicht mit der von Ihnen angegebenen Signatur überein. Überprüfen Sie Ihren geheimen AWS-Zugriffsschlüssel und die Signaturmethode." Die Signatur in der Anfrage stimmt nicht mit der auf dem Server überein, wenn auf eine API zugegriffen wird, die die IAM-Autorisierung nutzt.
AWS WAF gefiltert "x-amzn-ErrorType" = "ForbiddenException" "Forbidden" Die Anfrage wird durch die Web-Application-Firewall-Filterung (WAF) blockiert, wenn AWS WAF in der API aktiviert ist.
Ressourcenpfad existiert nicht "x-amzn-ErrorType" = "MissingAuthenticationTokenException" "Authentifizierungstoken fehlt" Eine Anfrage ohne "Autorisierungs" -Header wird an einen API-Ressourcenpfad gesendet, der nicht existiert.
Ressourcenpfad existiert nicht "x-amzn-ErrorType" = "IncompleteSignatureException" "Autorisierungsheader erfordert den Parameter „Anmeldeinformation“. Der Autorisierungsheader erfordert den Parameter „Signatur“. Der Autorisierungsheader erfordert den Parameter „SignedHeaders“. Der Autorisierungsheader erfordert entweder das Vorhandensein eines „X-Amz-Date“- oder eines „Date“-Headers. Autorisierung=allow" Eine Anfrage mit einem "Autorisierungs" -Header wird an einen API-Ressourcenpfad gesendet, der nicht existiert.
Aufrufen einer privaten API mit falschen öffentlichen DNS-Namen "x-amzn-ErrorType" = "ForbiddenException" "Forbidden"

Beim Aufrufen einer privaten API aus einer Amazon Virtual Private Cloud (Amazon VPC) mit öffentlichen DNS-Namen fehlt der "Host" or "x-apigw-api-id" Header in der Anfrage.

Weitere Informationen finden Sie unter Aufrufen Ihrer privaten API mit endpunktspezifischen öffentlichen DNS-Hostnamen.

Aufrufen einer REST-API mit einem benutzerdefinierten Domänennamen unter Verwendung des standardmäßigen execute-api-Endpunkts.

"x- amzn-ErrorType" = "ForbiddenException" "Forbidden"

Der Anrufer verwendet den standardmäßigen execute-api-Endpunkt zum Aufrufen einer REST-API nach dem Deaktivieren des Standardendpunkts.

Weitere Informationen finden Sie unter Deaktivieren des Standardendpunkts für eine REST-API.

Auflösung

Befolgen Sie diese Schritte zur Fehlerbehebung, um die Fehlerursache zu ermitteln.

Betrachten Sie die Fehlerquelle

Wenn der 403-Fehler von anderen Ressourcen gemeldet wurde, kann der Fehler eine andere Ursache haben. Beispiel:

  • Wenn der Fehler in einem Webbrowser gemeldet wurde, kann dieser Fehler durch eine falsche Proxy-Einstellung verursacht werden. Der Proxy-Server gibt einen 403-Fehler zurück, wenn der HTTP-Zugriff nicht zulässig ist.
  • Wenn sich vor der API ein anderer AWS-Service befindet (z. B. Amazon CloudFront), kann dieser Service die Anfrage mit einem 403-Fehler in der Antwort ablehnen.

API-Zugriffsprotokollierung einrichten zur Untersuchung.

Bestätigen Sie, dass die angeforderte Ressource in der API-Definition vorhanden ist

Suchen Sie mit der API-Gateway-Konsole oder der AWS Command Line Interface (AWS CLI) nach der angeforderten Ressource in der API.

Hinweis: Die API muss mit der neuesten API-Definition bereitgestellt werden.

Verwenden Sie curl, um Details zu Anfragen und Antworten abzurufen

Wenn der Fehler reproduziert werden kann, verwenden Sie curl -v, um weitere Details zwischen dem Client und der API zu erhalten.

curl -v-Befehlsbeispiel

curl -X GET -v https://apiId.execute-api.region.amazonaws.com/stageName/resourceName

Weitere Informationen finden Sie auf der Curl-Projekt-Website.

Header überprüfen

Wenn der Fehler einen API-Schlüssel betrifft, überprüfen Sie, ob der Header „x-api-key“ in der Anfrage gesendet wurde.

Überprüfen Sie die DNS-Einstellung auf einem VPC-Endpunkt

Wenn die API von einer Amazon VPC mit einem Schnittstellen-VPC-Endpunkt aufgerufen wird, vergewissern Sie sich, dass die DNS-Einstellung des Schnittstellenendpunkts basierend auf dem API-Typ richtig eingestellt ist.

Beachten Sie Folgendes:

Überprüfen Sie die Ressourcenrichtlinie

Überprüfen Sie Folgendes:

  • Wenn die API von einer Amazon VPC mit einem Schnittstellen-VPC-Endpunkt aufgerufen wird, muss die Ressourcenrichtlinie der API der Amazon VPC oder dem Schnittstellenendpunkt Zugriff an die API gewähren.
  • Die Ressourcenspezifikationen und die Formatierung der Ressourcenrichtlinie sind korrekt. (Beim Speichern einer Ressourcenrichtlinie findet keine Überprüfung der Ressourcenspezifikation statt.) Beispiele finden Sie unter Beispiele für API-Gateway-Ressourcenrichtlinien.

API-Zugriffsprotokolle analysieren

Richten Sie die Zugriffsprotokolle der API ein und analysieren Sie sie, um festzustellen, ob Anfragen die API erreichen.

HTTP-Anforderungs- und -Antwortnachrichten analysieren

Wenn Sie dies tun können, reproduzieren Sie den Fehler in einem Webbrowser und verwenden Sie dann die Netzwerktools des Browsers, um die HTTP-Anforderungs- und Antwortnachrichten zur Analyse zu erfassen. Speichern Sie diese Nachrichten zur Offlineanalyse in einer HTTP-Archivdatei (HAR).

Hinweis: Anweisungen zum Erstellen einer HAR-Datei finden Sie unter Wie erstelle ich eine HAR-Datei aus meinem Browser für einen AWS-Supportfall?

Anschließen Sie die Anfragen und Antworten zwischen dem Client und der API, um festzustellen, wo der Fehler aufgetreten ist.