Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie API Gateway Lambda-Autorisierer
Verwenden Sie einen Lambda-Autorisierer (früher bekannt als benutzerdefinierter Autorisierer), um den Zugriff auf Ihren zu kontrollieren. API Wenn ein Client eine Anfrage an Ihre API Methode stellt, ruft API Gateway Ihren Lambda-Authorizer auf. Der Lambda-Autorisierer verwendet die Identität des Aufrufers als Eingabe und gibt eine IAM Richtlinie als Ausgabe zurück.
Verwenden Sie einen Lambda-Autorisierer, um ein benutzerdefiniertes Autorisierungsschema zu implementieren. Ihr Schema kann Anforderungsparameter verwenden, um die Identität des Aufrufers zu ermitteln, oder eine Bearer-Token-Authentifizierungsstrategie wie oder verwenden. OAuth SAML Erstellen Sie einen Lambda-Autorisierer in der API REST API Gateway-Konsole mit dem AWS CLI, oder einem. AWS SDK
Autorisierungsworkflow für Lambda-Autorisierer
Das folgende Diagramm zeigt den Autorisierungsworkflow für einen Lambda-Autorisierer.
APIWorkflow zur Gateway-Lambda-Autorisierung
-
Der Client ruft eine Methode auf einem API Gateway auf und übergibt API dabei ein Bearer-Token oder Anforderungsparameter.
-
APIGateway prüft, ob die Methodenanforderung mit einem Lambda-Authorizer konfiguriert ist. Ist dies der Fall, ruft API Gateway die Lambda-Funktion auf.
-
Die Lambda-Funktion authentifiziert den Anrufer. Die Funktion kann sich auf folgende Weise authentifizieren:
-
Indem Sie einen OAuth Anbieter anrufen, um ein OAuth Zugriffstoken zu erhalten.
-
Indem Sie einen SAML Anbieter anrufen, um eine SAML Bestätigung zu erhalten.
-
Durch Generieren einer IAM Richtlinie auf der Grundlage der Werte der Anforderungsparameter.
-
Durch das Abrufen von Anmeldeinformationen aus einer Datenbank.
-
-
Die Lambda-Funktion gibt eine IAM Richtlinie und einen Prinzipalbezeichner zurück. Wenn die Lambda-Funktion diese Informationen nicht zurückgibt, schlägt der Aufruf fehl.
-
APIGateway bewertet die IAM Richtlinie.
-
Wenn der Zugriff verweigert wird, gibt API Gateway einen geeigneten HTTP Statuscode zurück, z. B.
403 ACCESS_DENIED
-
Wenn der Zugriff erlaubt ist, ruft API Gateway die Methode auf.
Wenn Sie das Autorisierungs-Caching aktivieren, speichert API Gateway die Richtlinie im Cache, sodass die Lambda-Autorisierungsfunktion nicht erneut aufgerufen wird.
-
Sie können die oder die Gateway-Antworten anpassen. 403
ACCESS_DENIED
401 UNAUTHORIZED
Weitere Informationen hierzu finden Sie unter Gateway-Antworten für REST APIs in API Gateway.
Auswahl eines Lambda-Autorisierungstyps
Es gibt zwei Arten von Lambda-Genehmigern:
- Parameterbasierten Lambda-Authorizer (Authorizer) anfordern
REQUEST
-
Ein
REQUEST
Autorisierer empfängt die Identität des Aufrufers in einer Kombination aus Headern, Abfragezeichenfolgenparametern und Variablen. stageVariables$context Sie können einenREQUEST
Autorisierer verwenden, um detaillierte Richtlinien zu erstellen, die auf den Informationen aus mehreren Identitätsquellen basieren, z. B. den Variablen und den Kontextvariablen.$context.path
$context.httpMethod
Wenn Sie das Autorisierungs-Caching für einen
REQUEST
Autorisierer aktivieren, überprüft API Gateway, ob alle angegebenen Identitätsquellen in der Anfrage vorhanden sind. Wenn eine angegebene Identitätsquelle fehlt, null oder leer ist, gibt API Gateway eine401 Unauthorized
HTTP Antwort zurück, ohne die Lambda-Autorisierungsfunktion aufzurufen. Wenn mehrere Identitätsquellen definiert sind, werden sie alle verwendet, um den Cache-Schlüssel des Autorisierers abzuleiten, wobei die Reihenfolge beibehalten wird. Sie können einen detaillierten Cache-Schlüssel definieren, indem Sie mehrere Identitätsquellen verwenden.Wenn Sie einen Teil des Cache-Schlüssels ändern und Ihren API erneut bereitstellen, verwirft der Autorisierer das zwischengespeicherte Richtliniendokument und generiert ein neues.
Wenn Sie das Autorisierungs-Caching für einen
REQUEST
Autorisierer deaktivieren, leitet API Gateway die Anfrage direkt an die Lambda-Funktion weiter. - Tokenbasierter Lambda-Autorisierer (Autorisierer)
TOKEN
-
Ein
TOKEN
Autorisierer empfängt die Identität des Aufrufers in einem Trägertoken, z. B. einem Web-Token () oder einem JSON Token. JWT OAuthWenn Sie das Autorisierungs-Caching für einen
TOKEN
Authorizer aktivieren, wird der in der Token-Quelle angegebene Header-Name zum Cache-Schlüssel.Darüber hinaus können Sie die Token-Validierung verwenden, um eine RegEx Anweisung einzugeben. APIGateway führt eine erste Validierung des Eingabe-Tokens anhand dieses Ausdrucks durch und ruft bei erfolgreicher Validierung die Lambda-Autorisierungsfunktion auf. Dies trägt dazu bei, die Anzahl der Anrufe an Ihre zu reduzieren. API
Die
IdentityValidationExpression
Eigenschaft wird nur fürTOKEN
Autorisierer unterstützt. Weitere Informationen finden Sie unter x-amazon-apigateway-authorizer Objekt.
Anmerkung
Wir empfehlen Ihnen, einen REQUEST
Autorisierer zu verwenden, um den Zugriff auf Ihre zu kontrollieren. API Sie können den Zugriff auf Ihre Datenbank API anhand mehrerer Identitätsquellen steuern, wenn Sie einen REQUEST
Autorisierer verwenden, im Vergleich zu einer einzigen Identitätsquelle, wenn Sie einen TOKEN
Autorisierer verwenden. Darüber hinaus können Sie Cache-Schlüssel mithilfe mehrerer Identitätsquellen für einen REQUEST
Autorisierer trennen.
Beispiel für eine REQUEST
Autorisierungs-Lambda-Funktion
Der folgende Beispielcode erstellt eine Lambda-Autorisierungsfunktion, die eine Anfrage zulässt, wenn der vom Client bereitgestellte HeaderAuth1
Header, der QueryString1
Abfrageparameter und die Stage-Variable StageVar1
alle den angegebenen Werten von headerValue1
queryValue1
, bzw. entsprechen. stageValue1
In diesem Beispiel prüft die Lambda-Autorisierungsfunktion die Eingabeparameter und verhält sich wie folgt:
-
Wenn alle erforderlichen Parameterwerte den erwarteten Werten entsprechen, gibt die Autorisierungsfunktion eine
200 OK
HTTP Antwort und eine IAM Richtlinie zurück, die wie folgt aussehen, und die Methodenanforderung ist erfolgreich:{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
-
Andernfalls gibt die Autorisierungsfunktion eine
401 Unauthorized
HTTP Antwort zurück und die Methodenanforderung schlägt fehl.
Die Lambda-Autorisierungsfunktion muss nicht nur eine IAM Richtlinie zurückgeben, sondern auch die Prinzipal-ID des Aufrufers zurückgeben. Optional kann sie ein context
Objekt zurückgeben, das zusätzliche Informationen enthält, die an das Integrations-Backend übergeben werden können. Weitere Informationen finden Sie unter Ausgabe von einem API Gateway Lambda Authorizer.
Im Produktionscode müssen Sie möglicherweise den Benutzer authentifizieren, bevor Sie die Autorisierung erteilen. Sie können der Lambda-Funktion Authentifizierungslogik hinzufügen, indem Sie einen Authentifizierungsanbieter aufrufen, wie in der Dokumentation für diesen Anbieter beschrieben.
Beispiel für eine TOKEN
Autorisierungs-Lambda-Funktion
Der folgende Beispielcode erstellt eine TOKEN
Lambda-Autorisierungsfunktion, die es einem Aufrufer ermöglicht, eine Methode aufzurufen, wenn der vom Client bereitgestellte Tokenwert lautet. allow
Der Aufrufer darf die Anfrage nicht aufrufen, wenn der Tokenwert ist. deny
Wenn der Tokenwert unauthorized
oder eine leere Zeichenfolge ist, gibt die Autorisierungsfunktion eine Antwort zurück. 401 UNAUTHORIZED
In diesem Beispiel übergibt API Gateway, wenn API er eine Methodenanforderung empfängt, das Quell-Token an diese Lambda-Autorisierungsfunktion im event.authorizationToken
Attribut. Die Lambda-Genehmigerfunktion liest das Token und verhält sich wie folgt:
-
Wenn der Token-Wert ist
allow
, gibt die Autorisierungsfunktion eine200 OK
HTTP Antwort und eine IAM Richtlinie zurück, die wie folgt aussehen, und die Methodenanforderung ist erfolgreich:{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
-
Wenn der Tokenwert ist
deny
, gibt die Autorisierungsfunktion eine200 OK
HTTP Antwort und eineDeny
IAM Richtlinie zurück, die wie folgt aussehen, und die Methodenanforderung schlägt fehl:{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
Anmerkung
Außerhalb der Testumgebung gibt API Gateway eine
403 Forbidden
HTTP Antwort zurück und die Methodenanforderung schlägt fehl. -
Wenn der Tokenwert
unauthorized
oder eine leere Zeichenfolge ist, gibt die Autorisierungsfunktion eine401 Unauthorized
HTTP Antwort zurück und der Methodenaufruf schlägt fehl. -
Wenn das Token anders lautet, erhält der Client eine
500 Invalid token
-Antwort, und der Methodenaufruf schlägt fehl.
Die Lambda-Autorisierungsfunktion muss nicht nur eine IAM Richtlinie zurückgeben, sondern auch die Prinzipal-ID des Aufrufers zurückgeben. Optional kann sie ein context
Objekt zurückgeben, das zusätzliche Informationen enthält, die an das Integrations-Backend übergeben werden können. Weitere Informationen finden Sie unter Ausgabe von einem API Gateway Lambda Authorizer.
Im Produktionscode müssen Sie möglicherweise den Benutzer authentifizieren, bevor Sie die Autorisierung erteilen. Sie können der Lambda-Funktion Authentifizierungslogik hinzufügen, indem Sie einen Authentifizierungsanbieter aufrufen, wie in der Dokumentation für diesen Anbieter beschrieben.
Zusätzliche Beispiele für Lambda-Authorizer-Funktionen
Die folgende Liste enthält weitere Beispiele für Lambda-Autorisierungsfunktionen. Sie können eine Lambda-Funktion in demselben Konto oder in einem anderen Konto erstellen, von dem aus Sie Ihre API erstellt haben.
Für die vorherigen Lambda-Beispielfunktionen können Sie die integrierten Funktionen verwenden AWSLambdaBasicExecutionRole, da diese Funktionen keine anderen AWS Dienste aufrufen. Wenn Ihre Lambda-Funktion andere AWS Dienste aufruft, müssen Sie der Lambda-Funktion eine IAM Ausführungsrolle zuweisen. Folgen Sie beim Erstellen einer Rolle den Anweisungen unter AWS Lambda -Ausführungsrolle.
Zusätzliche Beispiele für Lambda-Authorizer-Funktionen
-
Eine Beispielanwendung finden Sie unter Open Banking Brazil — Authorization Samples on
. GitHub -
Weitere Lambda-Beispielfunktionen finden Sie unter aws-apigateway-lambda-authorizer-blueprints on
. GitHub -
Sie können einen Lambda-Autorisierer erstellen, der Benutzer mithilfe von Amazon Cognito Cognito-Benutzerpools authentifiziert und Anrufer anhand eines Richtlinienspeichers mithilfe verifizierter Berechtigungen autorisiert. Weitere Informationen finden Sie unter Steuern Sie den Zugriff anhand der Attribute einer Identität mit verifizierten Berechtigungen.
-
Die Lambda-Konsole stellt einen Python-Blueprint bereit, den Sie verwenden können, indem Sie Blueprint verwenden und dann Blueprint auswählen. api-gateway-authorizer-python