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

Objeto x-amazon-apigateway-authorizer

Define un autorizador de Lambda, el grupo de usuarios de Amazon Cognito o autorizador de JWT que se debe aplicar a la autorización de invocaciones de método en API Gateway. Esta extensión se aplica a la definición de seguridad en OpenAPI 2 y OpenAPI 3.

Nombre de la propiedad Tipo Descripción
type string

El tipo del autorizador. Esta propiedad es obligatoria.

Para las API REST, especifique token para un autorizador con la identidad del intermediario incrustada en un authorization token. Especifique request para un autorizador con la identidad del intermediario incluida en los parámetros de solicitud. Especifique cognito_user_pools para un autorizador que utilice un grupo de usuarios de Amazon Cognito para controlar el acceso a la API.

Para API HTTP, especifique request para un autorizador de Lambda con la identidad del intermediario incluida en los parámetros de solicitud. Especifique jwt para un autorizador de JWT.

authorizerUri string

El identificador uniforme de recursos (URI) de la función de Lambda del autorizador. La sintaxis es la siguiente:

"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

Las credenciales necesarias para invocar el autorizador, si existen, en forma de ARN de un rol de ejecución de IAM. Por ejemplo, "arn:aws:iam::id-cuenta:rol_de_IAM".

authorizerPayloadFormatVersion string

Para las API HTTP, especifica el formato de los datos que API Gateway envía a un autorizador Lambda y cómo API Gateway interpreta la respuesta de Lambda. Para obtener más información, consulte Versión de formato de carga.

enableSimpleResponses Boolean

Para API HTTP, especifica si un autorizador de request devuelve un valor booleano o una política de IAM. Solo se admite para autorizadores con una authorizerPayloadFormatVersion de 2.0. Si está habilitada, la función del autorizador de Lambda devuelve un valor booleano. Para obtener más información, consulte Respuesta de función de Lambda para el formato 2.0.

identitySource string

Lista separada por comas de las expresiones de mapeo de los parámetros de solicitud como en la fuente de identidad. Aplicable solo para el autorizador del tipo request y jwt.

jwtConfiguration Object

Especifica el emisor y los destinatarios de un autorizador de JWT. Para obtener más información, consulte JWTConfiguration en la Referencia de la API de API Gateway versión 2. Solo se admite para API HTTP.

identityValidationExpression string

Una expresión regular para validar el token y la identidad de entrada. Por ejemplo, "^ x- [a-z]+". Compatible solo para autorizadores TOKEN para API de REST.

authorizerResultTtlInSeconds string

Número de segundos durante los que se almacena en caché el resultado del autorizador.

providerARNs Matriz de string

Una lista de los ARN de grupos de usuarios de Amazon Cognito para COGNITO_USER_POOLS.

Ejemplos de x-amazon-apigateway-authorizer para API REST

El siguiente ejemplo de definiciones de seguridad de OpenAPI especifica un autorizador de Lambda del tipo "token" denominado 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 } } }

El siguiente fragmento del objeto de operación de OpenAPI establece el método GET /http para utilizar el autorizador de Lambda precedente.

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

El siguiente ejemplo de definiciones de seguridad de OpenAPI especifica un autorizador de Lambda del tipo "request" con un único parámetro de encabezado (auth) como fuente de identidad. El elemento securityDefinitions se denomina 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 } } }

El siguiente ejemplo de definiciones de seguridad de OpenAPI especifica un autorizador de Lambda del tipo "request" con un encabezado (HeaderAuth1) y un parámetro de cadena de consulta QueryString1 como fuentes de identidad.

"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 } } }

El siguiente ejemplo de definiciones de seguridad de OpenAPI especifica un autorizador de Lambda de API Gateway del tipo "request" con una única variable de etapa (stage) como fuente de identidad.

"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 } } }

En el siguiente ejemplo de definición de seguridad de OpenAPI se especifica un grupo de usuarios de Amazon Cognito como autorizador.

"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" ] } }

En el siguiente fragmento de objeto de operación de OpenAPI se establece GET /http para utilizar el grupo de usuarios anterior de Amazon Cognito como autorizador, sin ámbitos personalizados.

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

Ejemplos de x-amazon-apigateway-authorizer para API HTTP

En el siguiente ejemplo de OpenAPI 3.0 se crea un autorizador de JWT para una API HTTP que utiliza Amazon Cognito como proveedor de identidad, con el encabezado Authorization como origen de identidad.

"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" } } }

En el siguiente ejemplo de OpenAPI 3.0 se crea el mismo autorizador de JWT que en el ejemplo anterior. Sin embargo, en este ejemplo se utiliza la propiedad openIdConnectUrl de OpenAPI para detectar automáticamente el emisor. La openIdConnectUrl debe estar completamente formada.

"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" } } }

En el ejemplo siguiente se crea un autorizador Lambda para una API HTTP. Este autorizador de ejemplo utiliza el encabezado Authorization como su origen de identidad. El autorizador utiliza la versión 2.0 del formato de carga útil y devuelve el valor booleano, ya que enableSimpleResponses está establecido en true.

"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 } } }