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
Nombre de la propiedad | Tipo | Descripción |
---|---|---|
type |
string |
El tipo del autorizador. Esta propiedad es obligatoria. Para las API REST, especifique Para API HTTP, especifique |
authorizerUri |
string |
El identificador uniforme de recursos (URI) de la función de Lambda del autorizador. La sintaxis es la siguiente:
|
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:: |
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 |
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 |
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 |
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 |
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" : "custom", // 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 } } }