Ir para o conteúdo

Como soluciono os erros “HTTP 403 Forbidden” ao usar um Lambda Authorizer com uma API REST do API Gateway?

6 minuto de leitura
0

Depois de criar um AWS Lambda Authorizer para minha API REST do Amazon API Gateway, recebo erros “403 Forbidden” para chamadas de API.

Breve descrição

Observação: esta solução soluciona erros 403 relacionados aos Lambda Authorizers configurados somente para uma API REST. Para obter mais informações sobre como solucionar outros tipos de erros 403, consulte Como soluciono erros “HTTP 403 Forbidden” do API Gateway?

Os erros “403 Forbidden” podem ocorrer pelos seguintes motivos:

Se a chamada de API tiver um token ou fontes de identidade ausentes, nulas ou não validadas, você receberá um erro “401 Unauthorized”. Para mais informações, consulte Por que recebo erros “401 Unauthorized” do API Gateway depois de criar um Lambda Authorizer?

Resolução

Confirmar a causa do erro

se você ainda não fez isso, ative o Amazon CloudWatch Logs para sua API REST do API Gateway. Se você alterar a configuração do Authorizer, reimplante a API.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Revisar a mensagem do log de erro

Na resposta do API Gateway, procure uma mensagem de log de erro nos exemplos a seguir.

Exemplo de mensagem de log de erro para funções do Lambda Authorizer que retornam um documento de política do IAM com uma negação explícita:

{    "message": "User is not authorized to access this resource with an explicit deny"}

Exemplo de mensagem de log de erro para APIs REST com uma política de recursos anexada que nega implicitamente o acesso ao chamador:

{    "message": "User is not authorized to access this resource"}

Exemplo de mensagem de log de erro para APIs REST com uma política de recursos anexada que nega explicitamente o acesso ao chamador:

{    "message": "User: anonymous is not authorized to perform: execute-api:Invoke on resource: <api-resource-arn> with an explicit deny"}

Observação: para mais informações sobre as APIs do API Gateway que uma política do IAM controla, consulte Tabelas de resultados de avaliação da política.

Consultar os logs do API Gateway

Para revisar o fluxo de trabalho de autorização, consulte os logs de execução do API Gateway no CloudWatch Logs. Observe o resultado do Lambda Authorizer e o resultado da avaliação da política de recursos do API Gateway. Procure uma mensagem de erro de log nos exemplos a seguir.

Exemplo de mensagem de log de erro se um token necessário estiver ausente ou não corresponder à validação do token:

Extended Request Id: EXAMPLEabcIdGxzR=Unauthorized request: request-id

Observação: o valor do ID de solicitação estendida em seus logs é diferente porque é gerado aleatoriamente.

Exemplo de mensagem de log de erro se um Lambda Authorizer retornar uma política que nega o acesso:

Sending request to https://lambda.region.amazonaws.com/2015-03-31/functions/lambda-authorizer-arn/invocationsAuthorizer result body before parsing:  {  
  "principalId": "user",  
  "policyDocument": {  
    "Version": "2012-10-17",  
    "Statement": [  
      {  
        "Action": "execute-api:Invoke",  
        "Effect": "Deny",  
        "Resource": "resource-arn"  
      }  
    ]  
  }  
}  
Using valid authorizer policy for principal: principal  
Successfully completed authorizer execution  
The client is not authorized to perform this operation.

Observação: a política retornada depende do seu Lambda Authorizer. Se resource-arn da política retornada não incluir o recurso solicitante, a política negará implicitamente as solicitações.

Exemplo de mensagem de log de erro se a política de recursos do API Gateway negar a solicitação:

Extended Request Id: EXAMPLE1ABdGeZB=ExplicitDenyException User: anonymous is not authorized to perform: execute-api:Invoke on resource: api-resource-arn with an explicit deny: request-id

Resolva erros de “not authorized to access this resource” do autorizador do Lambda

Você pode obter erros “not authorized to access this resource” de forma intermitente devido ao armazenamento de políticas em cache. Para confirmar se o Armazenamento de autorizações em cache está ativado, revise a configuração do Lambda Authorizer no console do API Gateway. Feito isso, execute uma das ações a seguir:

  • Para um teste único, execute o comando da AWS CLI flush-stage-authorizers-cache. Quando as entradas de cache do autorizador forem apagadas, chame sua API novamente.
  • Desative o armazenamento em cache de políticas, reimplante sua API para confirmar as alterações e chame sua API novamente.
    Observação: se o armazenamento em cache de políticas for desativado para um autorizador baseado em parâmetros de solicitação, o API Gateway não valida as chamadas para sua API antes de invocar a função do Lambda Authorizer.
  • Para alterar a chave de cache do autorizador, atualize o nome do cabeçalho especificado em Fonte do token (para autorizadores baseados em token) ou em Fontes de identidade (para autorizadores baseados em parâmetros de solicitação). Reimplante sua API para confirmar as alterações. Em seguida, chame sua API novamente com o cabeçalho do token recém-configurado ou as fontes de identidade.

Para determinar por que seu autorizador nega explicitamente o acesso ao chamador, revise o código da função do Lambda Authorizer. Se você determinar que o problema é devido ao armazenamento em cache, atualize o código para permitir o acesso ao chamador.

Para obter instruções, consulte Por que meu recurso de proxy do API Gateway com um autorizador do Lambda que tem o armazenamento em cache ativado está retornando erros de HTTP 403 “User is not authorized to access this resource” (o usuário não está autorizado a acessar este recurso)?

Resolva os erros “not authorized to perform: execute-api:Invoke”

Para verificar se sua política de recursos de APIs não é válida ou se ela nega explicitamente o acesso às suas chamadas, revise a política de recursos da sua API. É possível ver os logs de execução da sua API para obter o resultado da resposta para a política de recursos. Para obter mais informações, consulte Visão geral da linguagem de políticas de acesso para o Amazon API Gateway e a política de autorizadores e recursos do Lambda.

Informações relacionadas

Use autorizadores do Lambda do API Gateway

Controlar e gerenciar o acesso às APIs REST no API Gateway