Salta al contenuto

Come posso risolvere i problemi che causano errori HTTP 403 di Gateway API?

9 minuti di lettura
0

Quando chiamo la mia API di Gateway Amazon API, ricevo un errore 403.

Breve descrizione

Ricevi un errore con il codice di stato "HTTP 403" quando un client non riesce ad accedere a un URL valido. Il server comprende la richiesta, ma i problemi sul lato client non gli consentono di soddisfarla.

Le API di Gateway API potrebbero restituire errori "HTTP 403" per i seguenti motivi:

ProblemaIntestazione della rispostaMessaggio di erroreCausa principale
Accesso negato"x-amzn-errortype" = "AccessDeniedException""User is not authorized to access this resource with an explicit deny in an identity-based policy"Il sistema di autorizzazione Lambda di Gateway API utilizzato dall'API non autorizza il chiamante.
Accesso negato"x-amzn-errortype" = "AccessDeniedException""User: user-arn is not authorized to perform: execute-api:Invoke on resource: api-resource-arn with an explicit deny"L'autorizzazione AWS Identity and Access Management (AWS IAM) utilizzata dall'API non autorizza il chiamante. Oppure la policy delle risorse collegata all'API nega esplicitamente l'accesso al chiamante. Per ulteriori informazioni, consulta Autenticazione IAM e policy delle risorse.
Accesso negato"x-amzn-errortype" = "AccessDeniedException""User: anonymous is not authorized to perform: execute-api:Invoke on resource:api-resource-arn"L'autorizzazione IAM utilizzata dall'API non autorizza il chiamante. Oppure la policy delle risorse collegata all'API non consente esplicitamente al chiamante di invocare l'API. Per ulteriori informazioni, consulta Autenticazione IAM e policy delle risorse.
Accesso negato"x-amzn-errortype" = "AccessDeniedException""The security token included in the request is invalid."Il chiamante ha utilizzato chiavi IAM non valide per accedere a un'API che utilizza un'autorizzazione IAM.
Chiave API non valida"x-amzn-errortype" = "ForbiddenException""Forbidden"Il chiamante ha utilizzato una chiave API errata per un metodo che richiede una chiave API. Oppure non hai associato la chiave API a un piano di utilizzo che si connette alla fase. Oppure hai disattivato la chiave API o la chiave non esiste.
Richiesta filtrata da AWS WAF"x-amzn-errortype" = "ForbiddenException""Forbidden"Il filtro di Web Application Firewall blocca la richiesta quando attivi AWS WAF nell'API.
Utilizzo erroneo di nomi DNS pubblici per invocare un'API privata"x-amzn-errortype" = "ForbiddenException""Forbidden"Hai utilizzato erroneamente nomi DNS pubblici per invocare un'API privata da un Amazon Virtual Private Cloud (Amazon VPC). Per esempio, nella richiesta manca l'intestazione Host o x-apigw-api-id. Per ulteriori informazioni, consulta Invocazione di un'API privata tramite nomi host DNS pubblici specifici dell'endpoint.
Invocazione di un nome di dominio personalizzato senza mappatura del percorso di base"x-amzn-errortype" = "ForbiddenException""Forbidden"Il chiamante invoca un dominio personalizzato senza mappare un percorso di base a un'API. Per ulteriori informazioni, consulta Nome di dominio personalizzato per REST API pubbliche in Gateway API.
Invocazione di un nome di dominio personalizzato privato"x-amzn-errortype" = "ForbiddenException""Forbidden"Non hai associato il nome di dominio personalizzato privato all'endpoint VPC.
URL della fase nella richiesta non valido"x-amzn-errortype" = "ForbiddenException""Forbidden"L'URL della richiesta del chiamante include una fase inesistente. Per ulteriori informazioni, consulta Invocazione di REST API in Gateway API.
Utilizzo di un certificato client non valido per invocare un nome di dominio personalizzato di Gateway API che richiede l'autenticazione TLS reciproca"x-amzn-errortype" = "ForbiddenException""Forbidden"Il truststore del nome di dominio personalizzato non emette il certificato client contenuto nella richiesta API o il certificato non è valido. Per ulteriori informazioni, consulta Come posso risolvere gli errori HTTP 403 Forbidden relativi a un nome di dominio personalizzato di Gateway API che richiede l'autenticazione TLS reciproca?
Utilizzo dell'endpoint execute-api predefinito per invocare una REST API con un nome di dominio personalizzato"x-amzn-errortype" = "ForbiddenException""Forbidden"Il chiamante utilizza l'endpoint execute-api predefinito per invocare una REST API dopo che hai disattivato l'endpoint predefinito. Per ulteriori informazioni, consulta Disabilita l'endpoint predefinito per le REST API.
Utilizzo di regole di routing con nome di dominio personalizzato"x-amzn-errortype" = "ForbiddenException""Forbidden"Non hai configurato una regola di routing corrispondente con il nome di dominio personalizzato. Per ulteriori informazioni, consulta Risoluzione dei problemi relativi alle regole di routing.
Percorso della risorsa inesistente"x-amzn-errortype" = "IncompleteSignatureException""Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header. Authorization=allow"Hai inviato una richiesta con un'intestazione Authorization a un percorso della risorsa API inesistente.
Token di autenticazione scaduto"x-amzn-errortype" = "InvalidSignatureException""Signature expired"Il token di autenticazione della richiesta è scaduto.
Firma non valida"x-amzn-errortype" = "InvalidSignatureException""The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method."La firma nella richiesta non corrisponde alla firma nel server quando il chiamante accede a un'API che utilizza un'autorizzazione IAM.
Invocazione di un'API con dominio personalizzato attivato quando l'URL del dominio include la fase"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"La mappatura di un'API specifica un'API, una fase e un percorso facoltativo da utilizzare per la mappatura. Quando mappi una fase di un'API su un dominio personalizzato, non serve includere la fase nell'URL. Per ulteriori informazioni, consulta Utilizza le mappature delle API per connettere le fasi dell'API a un nome di dominio personalizzato per le REST API.
Token di autenticazione mancante"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"La richiesta non ha un token di autenticazione.
Token di autenticazione mancante"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Hai inviato una richiesta a un metodo API che non esiste nell'API.
Token di autenticazione mancante"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Hai inviato una richiesta a una risorsa API che non esiste nell'API.
Percorso della risorsa inesistente"x-amzn-errortype" = "MissingAuthenticationTokenException""Missing Authentication Token"Hai inviato una richiesta senza intestazione Authorization a un percorso di una risorsa API inesistente. Per ulteriori informazioni, consulta Come posso risolvere gli errori 403 "Missing Authentication Token". dell'endpoint della REST API di Gateway API?

Risoluzione

Verifica che la risorsa richiesta esista nella definizione dell'API

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Utilizza la console Gateway API o AWS CLI per verificare le configurazioni seguenti:

  • Hai distribuito l'API con la definizione dell'API più recente.
  • La risorsa richiesta esiste nella definizione dell'API.

Identifica la causa dell'errore

Per identificare la causa dell'errore, configura la registrazione degli accessi all'API in Amazon CloudWatch. Quindi visualizza gli eventi dei log dell'API in CloudWatch per capire se le richieste raggiungono l'API di Gateway API. Se le richieste raggiungono l'API di Gateway API e sono presenti messaggi di errore nei log, puoi proseguire risolvendo i problemi di Gateway API. Se le richieste raggiungono altre risorse, l'errore potrebbe essere causato da altri proxy o servizi.

Nota: le API HTTP non supportano la registrazione dell'esecuzione.

Se riesci a riprodurre l'errore, utilizza il comando curl -v per ottenere maggiori dettagli sulla comunicazione tra il client e l'API:

curl -X HTTP\_VERB -v https://api-id.execute-api.region.amazonaws.com/stage

Nota: sostituisci l'esempio di URL con l'URL di invocazione dell'API.

Verifica la REST API e reindirizza la mappatura dell'API

Se utilizzi un nome di dominio personalizzato che richiede l'autenticazione TLS reciproca e invoca un'API HTTP, potresti ricevere errori 403.

Crea una nuova mappatura dell'API per verificare l'invocazione della REST API con il nome di dominio personalizzato.Per identificare la causa degli errori, visualizza gli eventi dei log della REST API in CloudWatch.Dopo aver identificato e risolto l'errore, reindirizza la mappatura dell'API all'API HTTP.

Verifica che l'intestazione della richiesta sia corretta

Se l'errore è causato da una chiave API non valida, verifica di aver inviato nella richiesta l'intestazione x-api-key. Se non hai incluso l'intestazione o se l'intestazione non è corretta, aggiornala.

Verifica di aver configurato correttamente l'impostazione DNS negli endpoint Amazon VPC di interfaccia

Nota: le seguenti attività valgono per le API che invochi da un Amazon VPC che ha solo un endpoint VPC di interfaccia.

Verifica di aver configurato correttamente il DNS dell'endpoint di interfaccia in base al tipo di API che utilizzi.

Per invocare un'API Regionale AWS dall'interno di un Amazon VPC, disattiva i nomi DNS privati nell'endpoint di interfaccia. In questo modo, il DNS pubblico può risolvere il nome host dell'endpoint. Per ulteriori informazioni, consulta Creazione di un'API privata.

Per invocare un'API privata dall'interno di un Amazon VPC utilizzando il nome DNS privato dell'API, attiva i nomi DNS privati nell'endpoint. In questo modo, le risorse della sottorete locale di Amazon VPC possono risolvere il nome host dell'endpoint di interfaccia.

Nota: se attivi il DNS privato e utilizzi l'URI predefinito, non serve configurare il nome DNS pubblico dell'API privata o un alias in Amazon Route 53.

Rivedi la policy delle risorse dell'API

Rivedi la policy delle risorse dell'API per verificare le configurazioni seguenti:

Rivedi i messaggi di richiesta e risposta HTTP

Riproduci l'errore in un browser web. Utilizza gli strumenti di rete del browser per acquisire i messaggi di richiesta e risposta HTTP, quindi analizzali per determinare dove si è verificato l'errore.

Nota: per l'analisi offline, salva i messaggi in un file HTTP Archive (HAR).

Informazioni correlate

Common errors (Errori comuni)

Come posso consentire solo a indirizzi IP specifici di accedere alla mia REST API di Gateway API?

Come posso risolvere i problemi che riscontro quando mi connetto a un endpoint API privato di Gateway API?

Come posso attivare CloudWatch Logs per risolvere i problemi della mia REST API o API WebSocket di Gateway API?

curl sul sito web curl