Warum erhalte ich nach der Erstellung eines Lambda-Autorisierers die Fehler API Gateway 401 Unauthorized?

Lesedauer: 5 Minute
0

Meine Amazon API Gateway-API gibt 401 Unautorisierte Fehler zurück, nachdem ich dafür einen AWS Lambda-Autorisierer erstellt habe. Warum passiert das und wie behebe ich das Problem?

Kurzbeschreibung

**Hinweis:**API Gateway kann aus vielen Gründen 401 Unauthorized Fehler zurückgeben. In diesem Artikel werden nur 401 Fehler behandelt, die von API Gateway zurückgegeben wurden, ohne die Lambda-Funktion des Authorizers aufzurufen.

Wenn eine API-Gateway-API mit einem Lambda-Authorizer eine nicht autorisierte Anforderung erhält, gibt API-Gateway eine Antwort 401 Unauthorized zurück.

Für tokenbasierte Lambda-Autorisierer

401 Unautorisierte Fehler treten normalerweise auf, wenn ein erforderliches Token fehlt oder nicht durch den Token-Validierungsausdruck des Autorisierers validiert wurde.

Für Anfragen parameterbasierte Lambda-Autorisatoren

401 Unautorisierte Fehler treten normalerweise auf, wenn konfigurierte Identitätsquellen fehlen, null, leer oder ungültig sind.

Um diese Art von Fehler zu beheben, überprüfen Sie die Informationen, die in Anforderungen an Ihre API enthalten sein müssen, indem Sie die Konfiguration Ihres Lambda-Authorizers überprüfen. Testen Sie dann den Authorizer, indem Sie Ihre API mit dem erforderlichen Header- und Token-Wert oder den Identitätsquellen aufrufen.

**Hinweis: ** Beispiele für die Einrichtung von Lambda-Autorisierungsfunktionen finden Sie unter Erstellen einer Token-basierten Lambda-Autorisierungsfunktion und Erstellen einer anforderungsbasierten Lambda-Autorisierungsfunktion.

Behebung

Überprüfen Sie die Konfiguration des Lambda-Autorisierers

  1. Öffnen Sie die API Gateway-Konsole.

  2. Wählen Sie im Bereich APIs den Namen Ihrer API aus.

  3. Wählen Sie im Navigationsbereich unter dem Namen Ihrer API die Option Authorizers aus. Die Seite Authorizers wird geöffnet.

  4. Überprüfen Sie die Konfiguration des Autorisierers anhand Ihres Anwendungsfalls auf eine der folgenden Optionen:

Für tokenbasierte Lambda-Autorisierer

Wenn Lambda Event Payload als Token festgelegt ist, überprüfen Sie den Wert der Token-Quelle. Der Wert der Token-Quelle muss bei Aufrufen Ihrer API als Anfragekopf verwendet werden.

**Wichtig:Wenn Sie einen regulären Ausdruck für die Token-Validierung eingegeben haben, validiert API Gateway das Token anhand dieses Ausdrucks. Wenn Sie beispielsweise den regulären Ausdruck\ ** w\ {5} eingegeben haben, werden nur Token-Werte mit 5-stelligen alphanumerischen Zeichenketten erfolgreich validiert.

-oder-

Für Anfragen parameterbasierte Lambda-Autorisatoren

Wenn Lambda Event Payload auf Request gesetzt ist, überprüfen Sie die konfigurierten Identitätsquellen. Die Identitätsquellen können Header, Abfragezeichenfolgen, mehrwertige Abfragezeichenfolgen, Stage-Variablen oder $context-Variablen sein.

**Wichtig:**Wenn Authorization Caching aktiviert ist, werden Anfragen an Ihre API anhand aller konfigurierten Identitätsquellen validiert.

  1. Wenn Sie das Autorisierung Caching aktiviert haben (z. B. "Autorisierung wurde für 1 Minute zwischengespeichert“), schalten Sie im nächsten Schritt das Caching zu Testzwecken aus.

Weitere Informationen finden Sie unter Konfigurieren eines Lambda-Autorisierers mithilfe der API Gateway-Konsole.

Stellen Sie Ihre API bereit

Wenn Sie die Konfiguration Ihres Lambda-Authorizers oder andere API-Einstellungen geändert haben, Ihre API erneut bereitstellen, um die Änderungen zu bestätigen.

Testen Sie Ihren Lambda-Authorizer

Um Ihren Lambda-Authorizer zu testen, führen Sie einen Testaufruf an Ihre API durch, indem Sie einen der folgenden Schritte ausführen:

**Wichtig:**Stellen Sie sicher, dass Sie die Anfrage entsprechend der Konfiguration Ihres Lambda-Autorisierers formatieren.

So testen Sie einen Lambda-Authorizer mithilfe der API Gateway-Konsole

  1. Öffnen Sie die API Gateway-Konsole.

  2. Wählen Sie im Bereich APIs den Namen Ihrer API aus.

  3. Wählen Sie im Navigationsbereich unter dem Namen Ihrer API die Option Authorizers aus.

  4. Wählen Sie auf der Seite Authorizers die Option Test für Ihren Autorisierer aus.

  5. Führen Sie im Dialogfeld Test Authorizer je nach Anwendungsfall einen der folgenden Schritte aus:

Für tokenbasierte Lambda-Autorisierer

  1. Wählen Sie Test ohne einen Wert für das **Autorisierungstoken anzugeben.**API Gateway gibt einen Antwortcode zurück: 401, weil das **Autorisierungstoken ** leer ist.

  2. Wenn die Token-Validierung mit dem regulären Ausdruck \ w{5} konfiguriert ist, geben Sie als Autorisierungs-Token einen ungültigen Wert ein, z. B. "abc123". Wählen Sie dann Test. API Gateway gibt einen Antwortcode zurück: 401, weil das Autorisierungs-Token den Token-Validierung Ausdruck nicht erfüllt.

  3. Geben Sie für den Wert des Autorisierungstokens zulassen ein und wählen Sie dann Test aus. API Gateway gibt einen Antwortcode zurück: 200 Nachricht.

-oder-

Für Anfragen parameterbasierte Lambda-Autorisatoren

  1. Löschen Sie die Anforderungsparameter und wählen Sie ** Test**. API Gateway gibt einen Antwortcode zurück: 401 weil Anforderungsparameter fehlen.

  2. Geben Sie bei Anfrageparameter, headerValue1, queryValue1 und stageValue1 ein und wählen Sie Test . API Gateway gibt einen Antwortcode zurück: 200 Nachricht.

Um einen Lambda-Authorizer mit Postman oder curl zu testen

Anweisungen zum Testen eines Lambda-Authorizers mit der Postman-App finden Sie unter Aufrufen einer API mit API Gateway Lambda-Authorizern.

Weitere Informationen zu Curl finden Sie auf der cURL-Projektwebsite.

Hinweis:

  • Wenn Sie das Authorization Caching für Ihren Lambda-Authorizer vor dem Testen deaktiviert haben, können Sie es nach dem Testen wieder aktivieren. Wenn Sie Authorization Caching reaktivieren, stellen Sie sicher, dass Sie Ihre API erneut bereitstellen um die Änderungen zu übernehmen.
  • Wenn Sie CORS-Fehler (Cross-Origin Resource Sharing) von der Lambda-Autorisierung erhalten, können Sie die CORS-Header für die DEFAULT 4XX API Gateway-Antworten hinzufügen. Weitere Informationen finden Sie unter Wie behebe ich CORS-Fehler über meine API Gateway-API?

Ähnliche Informationen

Steuerung und Verwaltung des Zugriffs auf eine REST-API in API Gateway

Wie aktiviere ich Amazon CloudWatch Logs zur Fehlerbehebung bei meiner API-Gateway-REST-API oder WebSocket-API?