Come posso risolvere gli errori 403 "Missing Authentication Token". dell'endpoint REST API di Gateway API?

3 minuti di lettura
0

Provando a invocare la mia REST API di Gateway Amazon API, ho ricevuto messaggi di errore 403 "Missing Authentication Token".

Breve descrizione

Gli endpoint REST API di API Gateway restituiscono messaggi di errore Token di autenticazione mancante per i seguenti motivi:

  • La richiesta API viene inviata a un'operazione oppure a una risorsa che non esiste.
  • La richiesta API non viene firmata quando è attiva l'autenticazione AWS Identity and Access Management (IAM) per l'operazione API.
  • L'API potrebbe essere configurata con una risposta gateway modificata oppure la risposta potrebbe provenire da un'integrazione back-end.

Per risolvere altri errori 403 per API Gateway, consulta la sezione Come posso risolvere gli errori HTTP 403 di API Gateway?

Risoluzione

Verifica che nel percorso risorsa di Gateway API siano presenti una risorsa e un'operazione configurata

Segui le istruzioni riportate in Configurazione di un metodo mediante la console Gateway API. Per ulteriori informazioni, consulta Impostazione delle risorse API.

Importante: perché le modifiche abbiano effetto, è necessario distribuire l'API.

Per le API con integrazione di una risorse proxy in cui la richiesta viene inviata alla risorsa root, verifica che sia presente un'operazione configurata nella risorsa root.

Verifica che le risposte di Gateway API non siano state modificate e che l'integrazione del backend non abbia inviato la risposta

Assicurati che le risposte del gateway non siano state modificate nell'API. Inoltre, assicurati che l'errore non provenga dal backend di integrazione. Controlla i log di esecuzione e i log di back-end di API Gateway.

Se è attivata l'autenticazione IAM, verifica che la richiesta API sia firmata

Per ulteriori informazioni, consulta AWS Signature versione 4 per richieste API e Elementi della firma di una richiesta AWS API.

Verifica di aver inviato all'endpoint REST API la richiesta per l'operazione HTTP corretta

Esegui il test di un endpoint REST API da un browser web per inviare automaticamente una richiesta per l'operazione GET HTTP.

Per testare una richiesta per l'operazione POST HTTP, utilizza un client HTTP diverso. Ad esempio, usa Postman sul sito web di Postman o curl sul sito web di curl.

Esempio di comando curl che utilizza la richiesta del metodo POST HTTP

curl -X POST  API URL -d request body

Esempio di invio di richiesta con intestazione JSON

curl --location -X POST 'https://1234WXYZ.execute-api.your-aws-region.amazonaws.com/stage/lambda_proxy' --header 'Content-Type: application/json' --data-raw '{"x":"y"}'

Esempi di invio di richiesta POST curl con autenticazione della firma AWS V4

curl -X POST "ENDPOINT" -d data --user AWS_ACCESS_KEY:AWS_SECRET_KEY --aws-sigv4 "aws:amz:AWS_REGION:AWS_SERVICE"
curl -X POST "https://1234WXYZ.execute-api.us-east-1.amazonaws.com/stage/lambda_proxy" -d '{"x":"y"}' --user ABCD:1234 --aws-sigv4 "aws:amz:your-aws-region:execute-api"

Informazioni correlate

How do I activate IAM authentication for API Gateway REST APIs?