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?