Perché ricevo errori 401 di autorizzazione negata di Gateway API dopo aver creato un sistema di autorizzazione Lambda?

5 minuti di lettura
0

La mia API Gateway Amazon API restituisce errori 401 di autorizzazione negata dopo aver creato un apposito sistema di autorizzazione AWS Lambda. Perché succede e come posso risolvere il problema?

Descrizione breve

Nota: Gateway API può restituire errori 401 di autorizzazione negata per molte ragioni. Questo articolo tratta solo gli errori 401 di autorizzazione negata restituiti da Gateway API senza chiamare la funzione di autorizzazione Lambda.

Quando un'API Gateway API con un sistema di autorizzazione Lambda riceve una richiesta non autorizzata, Gateway API restituisce una risposta di errore 401 di autorizzazione negata.

Per i sistemi di autorizzazione Lambda basati su token

Gli errori 401 di autorizzazione negata di solito si verificano quando manca un token richiesto o quando il token non è convalidato dall'espressione di convalida del token nel sistema di autorizzazione.

Per i sistemi di autorizzazione Lambda basati su parametri della richiesta

Gli errori 401 di autorizzazione negata di solito si verificano quando le origini identità configurate sono mancanti, nulle, vuote o non valide.

Per risolvere questo tipo di errore, verifica le informazioni che devono essere incluse nelle richieste alla tua API esaminando la configurazione del tuo sistema di autorizzazione Lambda. Quindi, verifica il sistema di autorizzazione chiamando la tua API con l'intestazione e il valore del token o le origini identità richiesti.

Nota: Ad esempio, per le configurazioni del sistema di autorizzazione Lambda, vedi Creazione di una funzione di autorizzazione Lambda basata su token e Creazione di una funzione di autorizzazione Lambda basata su richiesta.

Risoluzione

Controllo della configurazione del sistema di autorizzazione Lambda

1.    Apri la console Gateway API.

2.    Nel riquadro API, scegli il nome della tua API.

3.    Nel riquadro di navigazione, sotto il nome della tua API, scegli Autorizzazioni. Viene visualizzata la pagina Autorizzazioni.

4.    Controlla la configurazione del sistema di autorizzazione per una delle seguenti opzioni in base al tuo caso d'uso:

Per i sistemi di autorizzazione Lambda basati su token

Se Payload dell’evento Lambda è impostato come Token, controlla il valore Origine token. Il valore Origine token deve essere utilizzato come intestazione della richiesta nelle chiamate alla tua API.

Importante: Se hai inserito un'espressione regolare per Convalida del token, Gateway API convalida il token rispetto a questa espressione. Ad esempio, se hai inserito l'espressione regolare \ w{5}, solo i valori di token con stringhe alfanumeriche di 5 caratteri vengono convalidati correttamente.

-oppure-

Per i sistemi di autorizzazione Lambda basati su parametri della richiesta

Se Payload dell’evento Lambda è impostato su Richiesta, controlla le Origini identità configurate. Le origini identità possono essere intestazioni, stringhe di query, stringhe di query multivalore, variabili di fase o variabili $context.

Importante: Se è attivata l'Autorizzazione caching, vengono convalidate le richieste all'API rispetto a tutte le origini identità configurate.

5.    Se hai attivato l'Autorizzazione caching (ad esempio, "Autorizzazione memorizzata nella cache per 1 minuto"), disattiva la memorizzazione nella cache per la verifica nel passaggio successivo.

Per ulteriori informazioni, consulta Configurazione di un'autorizzazione Lambda tramite la console API Gateway.

Distribuzione dell'API

Se hai modificato la configurazione del sistema di autorizzazione Lambda o qualsiasi altra impostazione API, ridistribuisci l'API per confermare le modifiche.

Verifica del sistema di autorizzazione Lambda

Per verificare il sistema di autorizzazione Lambda, effettua una chiamata di prova alla tua API con una delle seguenti operazioni:

Importante: Assicurati di formattare la richiesta in base alla configurazione del sistema di autorizzazione Lambda.

Per verificare un sistema di autorizzazione Lambda utilizzando la console Gateway API

1.    Apri la console Gateway API.

2.    Nel riquadro API, scegli il nome della tua API.

3.    Nel riquadro di navigazione, sotto il nome della tua API, scegli Autorizzazioni.

4.    Nella pagina Autorizzazioni, scegli Esegui il test per il tuo sistema di autorizzazione.

5.    Nella finestra di dialogo Test autorizzazioni, effettua una delle seguenti operazioni in base al caso d'uso:

Per i sistemi di autorizzazione Lambda basati su token

1.    Scegli Esegui il test senza fornire alcun valore per il Token di autorizzazione. Gateway API restituisce un Codice di risposta: 401 perché il Token di autorizzazione è vuoto.

2.    Se la Convalida del token con espressione regolare \ w{5} è configurata, inserisci un valore non valido, ad esempio "abc123", come Token di autorizzazione. Quindi, scegli Esegui il test. Gateway API restituisce un Codice di risposta: 401 perché il Token di autorizzazione non soddisfa l'espressione di Convalida del token.

3.    Per il valore del Token di autorizzazione, inserisci allow, quindi scegli Esegui il test. Gateway API restituisce un Codice di risposta: 200.

-oppure-

Per i sistemi di autorizzazione Lambda basati su parametri della richiesta

1.    Elimina i Parametri della richiesta e scegli Esegui il test. Gateway API restituisce un Codice di risposta: 401 perché mancano i Parametri della richiesta.

2.    Per i Parametri della richiesta, inserisci headerValue1, queryValue1 e stageValue1 e scegli Esegui il test. Gateway API restituisce un Codice di risposta: 200.

Per verificare un sistema di autorizzazione Lambda utilizzando Postman o curl

Per istruzioni su come verificare il sistema di autorizzazione Lambda utilizzando l'app Postman, consulta Chiama un'API con le autorizzazioni Lambda di Gateway API.

Per ulteriori informazioni su curl, consulta il sito web del progetto cURL.

Nota:

  • Se hai disattivato Autorizzazione caching per il tuo sistema di autorizzazione Lambda prima del test, puoi riattivarlo dopo il test. Se riattivi Autorizzazione caching, assicurati di ridistribuire l'API per confermare le modifiche.
  • Se ricevi errori CORS (Cross-Origin Resource Sharing) dal sistema di autorizzazione Lambda, puoi aggiungere le intestazioni CORS per le risposte DEFAULT 4XX del Gateway API. Per ulteriori informazioni, vedi In che modo è possibile risolvere gli errori CORS dalla mia API di Gateway API?

Informazioni correlate

Controllo e gestione degli accessi a un REST API in Gateway API

Come posso attivare i File di log Amazon CloudWatch per risolvere i problemi del REST API del mio Gateway API o API WebSocket?