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

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

x-amazon-apigateway-authorizer objeto

Define um autorizador do Lambda, um grupo de usuários do Amazon Cognito ou um autorizador do JWT a ser aplicado para a autorização de invocações de método no API Gateway. Esta extensão se aplica à definição de segurança no OpenAPI 2 e OpenAPI 3.

Propriedades
Nome da propriedade Tipo Descrição
type string

O tipo de autorizador. Essa é uma propriedade obrigatória.

Para APIs REST, especifique token para um autorizador com a identidade do autor da chamada incorporada em um token de autorização. Especifique request para um autorizador com a identidade do autor da chamada contida nos parâmetros da solicitação. Especifique cognito_user_pools para um autorizador que use um grupo de usuários do Amazon Cognito para controlar o acesso à API.

Para APIs HTTP, especifique request para um autorizador do Lambda com a identidade do autor da chamada contida nos parâmetros da solicitação. Especifique jwt para um autorizador do JWT.

authorizerUri string

O URI (Uniform Resource Identifier) da função do Lambda do autorizador. A sintaxe é a seguinte:

"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

As credenciais necessárias para invocar o autorizador, se houver, no formato de um ARN de uma função de execução do IAM. Por exemplo, "arn:aws:iam::account-id:IAM_role".

authorizerPayloadFormatVersion string

Para APIs HTTP, especifica o formato dos dados que o API Gateway envia para um autorizador do Lambda e como o API Gateway interpreta a resposta do Lambda. Para saber mais, consulte Versão do formato da carga útil.

enableSimpleResponses Boolean

Para APIs HTTP, especifica se um autorizador request retorna um valor booliano ou uma política do IAM. Compatível apenas com autorizadores com um authorizerPayloadFormatVersion de 2.0. Se habilitado, a função do autorizador do Lambda retornará um valor booliano. Para saber mais, consulte Resposta de função do Lambda para o formato 2.0.

identitySource string

Lista de expressões de mapeamento separadas por vírgulas dos parâmetros de solicitação como a origem de identidade. Aplicável somente para o autorizador dos tipos "request e jwt.

jwtConfiguration Object

Especifica o emissor e os públicos para um autorizador de JWT. Para saber mais, consulte JWTConfigurationna Referência de API do API Gateway versão 2. Compatível apenas com APIs HTTP.

identityValidationExpression string

Uma expressão regular para validar o token como identidade de entrada. Por exemplo, "^x-[a-z]+". Compatível apenas com APIs REST.

authorizerResultTtlInSeconds string

O número de segundos durante os quais o resultado do autorizador é armazenado em cache.

providerARNs Uma matriz de string

Uma lista dos ARNs do grupo de usuários do Amazon Cognito para COGNITO_USER_POOLS.

x-amazon-apigateway-authorizer exemplos de APIs REST

O exemplo de definições de segurança do OpenAPI a seguir especifica um autorizador do Lambda do tipo “token” chamado 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 } } }

O trecho de objeto de operação do OpenAPI a seguir define o GET /http para usar o autorizador do Lambda anterior.

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

O exemplo de definições de segurança do OpenAPI a seguir especifica um autorizador do Lambda do tipo “solicitação”, com um único parâmetro de cabeçalho (auth) como origem de identidade. O securityDefinitions é chamado 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 } } }

As definições de segurança demonstrativas do OpenAPI a seguir especificam um autorizador do Lambda do tipo “solicitação”, com um cabeçalho (HeaderAuth1) e um parâmetro de string de consulta QueryString1 como origens de identidade.

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

As definições de segurança demonstrativas do OpenAPI a seguir especificam um autorizador do Lambda do API Gateway do tipo “solicitação”, com uma única variável de estágio (stage) como origem de identidade.

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

O exemplo a seguir de definição de segurança da OpenAPI especifica um grupo de usuários do 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" ] } }

O trecho de objeto de operação da OpenAPI a seguir define o GET /http para usar o grupo de usuários anterior do Amazon Cognito como autorizador, sem escopos personalizados.

"/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 exemplos de APIs HTTP

O exemplo de OpenAPI 3.0 a seguir cria um autorizador JWT para uma API HTTP que usa o Amazon Cognito como um provedor de identidade, com o cabeçalho Authorization como uma origem de identidade.

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

O exemplo de OpenAPI 3.0 a seguir produz o mesmo autorizador de JWT como o exemplo anterior. No entanto, esse exemplo usa a propriedade openIdConnectUrl do OpenAPI para detectar o emissor automaticamente. O openIdConnectUrl deve estar totalmente formado.

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

O exemplo a seguir cria um autorizador do Lambda para uma API HTTP. Este exemplo de autorizador usa o cabeçalho Authorization como sua fonte de identidade. O autorizador usa a versão do formato de carga 2.0 e retorna o valor booliano, porque enableSimpleResponses está definido como 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 } } }