x-amazon-apigateway-authorizer-Objekt - Amazon API Gateway

x-amazon-apigateway-authorizer-Objekt

Definiert einen Lambda-Genehmiger, Amazon Cognito-Benutzerpool oder JWT-Genehmiger, der für die Autorisierung von Methodenaufrufen in API Gateway angewendet werden soll. Diese Erweiterung gilt für die Sicherheitsdefinition in OpenAPI 2 und OpenAPI 3.

Eigenschaften
Name der Eigenschaft Typ Beschreibung
type string

Der Typ des Genehmigers. Diese Eigenschaft ist erforderlich.

Für REST-APIs geben Sie token für einen Genehmiger an, bei dem die Identität des Aufrufers in ein Autorisierungs-Token eingebettet ist. Geben Sie request für einen Genehmiger an, wobei die Aufruferidentität in den Anforderungsparametern enthalten ist. Geben Sie cognito_user_pools für einen Genehmiger an, der einen Amazon Cognito-Benutzerpool verwendet, um den Zugriff auf Ihre API zu kontrollieren.

Für HTTP-APIs geben Sie request für einen Lambda-Genehmiger mit der in Anfrageparametern enthaltenen Aufruferidentität an. Geben Sie jwt für einen JWT-Genehmiger an.

authorizerUri string

Der Uniform Resource Identifier (URI) der Lambda-Funktion des Genehmigers. Die Syntax ist wie folgt:

"arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:account-id:function:auth_function_name/invocations"
authorizerCredentials string

Für den Aufruf des Genehmigers erforderliche Anmeldeinformationen, sofern vorhanden, in Form eines ARN einer IAM-Ausführungsrolle. Beispiel: "arn:aws:iam::account-id:IAM_role".

authorizerPayloadFormatVersion string

Für HTTP-APIs geben Sie das Format der Daten an, die API Gateway an einen Lambda-Genehmiger sendet, und wie API Gateway die Antwort von Lambda interpretiert. Weitere Informationen hierzu finden Sie unter Nutzlastformatversion.

enableSimpleResponses Boolean

Für HTTP-APIs geben Sie an, ob ein request-Genehmiger einen booleschen Wert oder eine IAM-Richtlinie zurückgibt. Wird nur für Genehmiger mit authorizerPayloadFormatVersion 2.0 unterstützt. Falls aktiviert, gibt die Lambda-Genehmiger-Funktion einen booleschen Wert zurück. Weitere Informationen hierzu finden Sie unter Lambda-Funktionsantwort für Format 2.0.

identitySource string

Eine CSV-Liste der Mapping-Ausdrücke der Anforderungsparameter als Identitätsquelle. Gilt nur für die Genehmiger des Typs request und jwt.

jwtConfiguration Object

Gibt den Aussteller und die Zielgruppen für einen JWT-Genehmiger an. Weitere Informationen finden Sie unter JWTConfiguration in der API Gateway Version 2 API-Referenz. Wird nur für HTTP-APIs unterstützt.

identityValidationExpression string

Ein regulärer Ausdruck für die Validierung des Tokens als eingehende Identität. Beispiel: "^x-[a-z]+". Wird nur für REST-APIs unterstützt.

authorizerResultTtlInSeconds string

Die Anzahl der Sekunden, über die hinweg das Genehmiger-Ergebnis zwischengespeichert wird.

providerARNs Ein Array von string

Eine Liste der Amazon-Cognito-Benutzerpool-ARNs für den COGNITO_USER_POOLS.

x-amazon-apigateway-authorizer-Beispiele für REST-APIs

Das folgende Beispiel für OpenAPI-Sicherheitsdefinitionen gibt einen Lambda-Genehmiger des Typs "token" des Namens a test-authorizer.

"securityDefinitions" : { "test-authorizer" : { "type" : "apiKey", // Required and the value must be "apiKey" for an API Gateway API. "name" : "Authorization", // The name of the header containing the authorization token. "in" : "header", // Required and the value must be "header" for an API Gateway API. "x-amazon-apigateway-authtype" : "oauth2", // Specifies the authorization mechanism for the client. "x-amazon-apigateway-authorizer" : { // An API Gateway Lambda authorizer definition "type" : "token", // Required property and the value must "token" "authorizerUri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:account-id:function:function-name/invocations", "authorizerCredentials" : "arn:aws:iam::account-id:role", "identityValidationExpression" : "^x-[a-z]+", "authorizerResultTtlInSeconds" : 60 } } }

Das folgende OpenAPI-Operations-Objekt-Snippet legt GET /http auf die Verwendung des vorhergehenden Lambda-Genehmigers fest.

"/http" : { "get" : { "responses" : { }, "security" : [ { "test-authorizer" : [ ] } ], "x-amazon-apigateway-integration" : { "type" : "http", "responses" : { "default" : { "statusCode" : "200" } }, "httpMethod" : "GET", "uri" : "http://api.example.com" } } }

Das folgende Beispiel für OpenAPI-Sicherheitsdefinitionen spezifiziert einen Lambda-Genehmiger des Typs "request" mit einem einzigen Header-Parameter (auth) als Identitätsquelle. Die securityDefinitions heißt request_authorizer_single_header.

"securityDefinitions": { "request_authorizer_single_header" : { "type" : "apiKey", "name" : "auth", // The name of a single header or query parameter as the identity source. "in" : "header", // The location of the single identity source request parameter. The valid value is "header" or "query" "x-amazon-apigateway-authtype" : "custom", "x-amazon-apigateway-authorizer" : { "type" : "request", "identitySource" : "method.request.header.auth", // Request parameter mapping expression of the identity source. In this example, it is the 'auth' header. "authorizerCredentials" : "arn:aws:iam::123456789012:role/AWSepIntegTest-CS-LambdaRole", "authorizerUri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:APIGateway-Request-Authorizer:vtwo/invocations", "authorizerResultTtlInSeconds" : 300 } } }

Das folgende Beispiel für OpenAPI-Sicherheitsdefinitionen spezifiziert einen Lambda-Genehmiger des Typs "request" mit einem Header (HeaderAuth1) und einem Abfragezeichenfolgenparameter QueryString1 als Identitätsquellen.

"securityDefinitions": { "request_authorizer_header_query" : { "type" : "apiKey", "name" : "Unused", // Must be "Unused" for multiple identity sources or non header or query type of request parameters. "in" : "header", // Must be "header" for multiple identity sources or non header or query type of request parameters. "x-amazon-apigateway-authtype" : "custom", "x-amazon-apigateway-authorizer" : { "type" : "request", "identitySource" : "method.request.header.HeaderAuth1, method.request.querystring.QueryString1", // Request parameter mapping expressions of the identity sources. "authorizerCredentials" : "arn:aws:iam::123456789012:role/AWSepIntegTest-CS-LambdaRole", "authorizerUri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:APIGateway-Request-Authorizer:vtwo/invocations", "authorizerResultTtlInSeconds" : 300 } } }

Das folgende OpenAPI-Sicherheitsdefinitionsbeispiel gibt einen API Gateway Lambda-Genehmiger vom Typ "request" mit einer einstufigen Variablen (stage) als Identitätsquelle an.

"securityDefinitions": { "request_authorizer_single_stagevar" : { "type" : "apiKey", "name" : "Unused", // Must be "Unused", for multiple identity sources or non header or query type of request parameters. "in" : "header", // Must be "header", for multiple identity sources or non header or query type of request parameters. "x-amazon-apigateway-authtype" : "custom", "x-amazon-apigateway-authorizer" : { "type" : "request", "identitySource" : "stageVariables.stage", // Request parameter mapping expression of the identity source. In this example, it is the stage variable. "authorizerCredentials" : "arn:aws:iam::123456789012:role/AWSepIntegTest-CS-LambdaRole", "authorizerUri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:APIGateway-Request-Authorizer:vtwo/invocations", "authorizerResultTtlInSeconds" : 300 } } }

Das folgende Beispiel für eine OpenAPI-Sicherheitsdefinition gibt einen Amazon Cognito-Benutzerpool als Genehmiger an.

"securityDefinitions": { "cognito-pool": { "type": "apiKey", "name": "Authorization", "in": "header", "x-amazon-apigateway-authtype": "cognito_user_pools", "x-amazon-apigateway-authorizer": { "type": "cognito_user_pools", "providerARNs": [ "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_ABC123" ] } }

Der folgende OpenAPI-Operationsobjektausschnitt legt GET /http fest, um den vorherigen Amazon Cognito-Benutzerpool als Genehmiger ohne benutzerdefinierte Bereiche zu verwenden.

"/http" : { "get" : { "responses" : { }, "security" : [ { "cognito-pool" : [ ] } ], "x-amazon-apigateway-integration" : { "type" : "http", "responses" : { "default" : { "statusCode" : "200" } }, "httpMethod" : "GET", "uri" : "http://api.example.com" } } }

x-amazon-apigateway-authorizer-Beispiele für HTTP-APIs

Das folgende OpenAPI 3.0-Beispiel erstellt einen JWT-Genehmiger für eine HTTP-API, die Amazon Cognito als Identitätsanbieter verwendet, mit dem Authorization-Header als Identitätsquelle.

"securitySchemes": { "jwt-authorizer-oauth": { "type": "oauth2", "x-amazon-apigateway-authorizer": { "type": "jwt", "jwtConfiguration": { "issuer": "https://cognito-idp.region.amazonaws.com/userPoolId", "audience": [ "audience1", "audience2" ] }, "identitySource": "$request.header.Authorization" } } }

Im folgenden Beispiel für OpenAPI 3.0 wird derselbe JWT-Genehmiger erstellt wie im vorherigen Beispiel. In diesem Beispiel wird jedoch die OpenAPI-openIdConnectUrl-Eigenschaft verwendet, damit der Aussteller automatisch erkannt wird. Die openIdConnectUrl muss vollständig gebildet sein.

"securitySchemes": { "jwt-authorizer-autofind": { "type": "openIdConnect", "openIdConnectUrl": "https://cognito-idp.region.amazonaws.com/userPoolId/.well-known/openid-configuration", "x-amazon-apigateway-authorizer": { "type": "jwt", "jwtConfiguration": { "audience": [ "audience1", "audience2" ] }, "identitySource": "$request.header.Authorization" } } }

Das folgende Beispiel erstellt einen Lambda-Genehmiger für eine HTTP-API. Dieser Beispiel-Genehmiger verwendet den Authorization-Header als Identitätsquelle. Der Genehmiger verwendet Nutzlast-Formatversion 2.0 und gibt den booleschen Wert zurück, da enableSimpleResponses auf true gesetzt ist.

"securitySchemes" : { "lambda-authorizer" : { "type" : "apiKey", "name" : "Authorization", "in" : "header", "x-amazon-apigateway-authorizer" : { "type" : "request", "identitySource" : "$request.header.Authorization", "authorizerUri" : "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123456789012:function:function-name/invocations", "authorizerPayloadFormatVersion" : "2.0", "authorizerResultTtlInSeconds" : 300, "enableSimpleResponses" : true } } }