2016-08-02 9 views
3

AWS API Gateway bietet an option, benutzerdefinierte Autorisierung über Lambda-Funktion zu verwenden. Bei diesem Ansatz wird vom Benutzer erwartet, dass er einen benutzerdefinierten Header-Namen konfiguriert (Beispiel: Auuthorization oder Auth). Dieser Header-Wert wird von Gateway extrahiert und an Lambda Event übergeben.AWS API Gateway Benutzerdefinierte Autorisierung Header-Fall-Empfindlichkeit

Gateway sucht jedoch empfindlich nach eingehenden Headers. Wenn Benutzer den Header als Autorisierung anstelle von Autorisierung angibt, gibt Gateway Gateway 401 zurück. Warum sucht diese Suche, wenn HTTP-Protokoll besagt, dass Header die Groß- und Kleinschreibung nicht beachten können.

Antwort

4

Yep dies ist ein bekanntes Problem mit dem Kunden authorizer, und auch die Header-Mapping-Funktionalität in API-Gateway. Bei Header-Übereinstimmungen wird zwischen Groß- und Kleinschreibung unterschieden, was, wie Sie angegeben haben, der Spezifikation entspricht. Ich habe keine ETA, um das zu beheben, aber es ist ein bekanntes Problem, das wir gerne beheben würden.

Edit: Dies sollte jetzt gelöst werden. Bei der Übereinstimmung der benutzerdefinierten Autorisierungs-Header wird nicht zwischen Groß- und Kleinschreibung unterschieden.

0

Ich vermute, dass Sie wahrscheinlich method.request.header.Authorization im Feld "Identity Token Source" und nicht method.request.header.authorization (siehe Bild im Anhang) haben. Vielleicht ist es nicht eine Frage der AWS folgenden nicht den Header-Standard, sondern passend es, was Sie es gesagt haben zu suchen ...

Check out this image for header matching settings

Wonder, wenn Sie einen Fall unempfindlich regex verwenden könnte wie können Sie in den anderen Header-Anforderungs-/Antwortübereinstimmungsfeldern, die das API-Gateway verwendet. Vielleicht etwas wie/(? I) Autorisierung /. (Reine Spekulation)

siehe auch:

blog post on custom authorizers in api gateway