Por que estou recebendo erros 401 Não autorizado do API Gateway depois de criar um autorizador Lambda?

5 minuto de leitura
0

Minha API Amazon API Gateway está retornando erros 401 Não autorizado depois que criei um autorizador do AWS Lambda para ela. Por que isso está acontecendo e como soluciono o problema?

Breve descrição

Observação: o API Gateway pode retornar erros 401 Não autorizado por vários motivos. Este artigo aborda somente erros de resposta 401 Não autorizado retornados pelo API Gateway sem chamar a função do Lambda do autorizador.

Quando uma API do API Gateway com um autorizador do Lambda recebe uma solicitação não autorizada, o API Gateway retorna uma resposta 401 Não autorizado.

Para autorizadores do Lambda baseados em tokens

Os erros 401 Não autorizado geralmente ocorrem quando um token necessário está ausente ou não é validado pela expressão de validação do token do autorizador.

Para autorizadores do Lambda baseados em parâmetros de solicitação

Os erros 401 Não autorizado geralmente ocorrem quando as fontes de identidade configuradas estão ausentes, nulas, vazias ou inválidas.

Para solucionar esse tipo de erro, verifique as informações que devem ser incluídas às solicitações feitas para sua API ao revisar sua configuração do autorizador do Lambda. Em seguida, teste o autorizador chamando sua API com o valor de cabeçalho e token necessários ou com as fontes de identidade.

Observação: para exemplos de configurações do autorizador do Lambda, consulte Criar uma função autorizadora do Lambda baseada em token e Criar uma função autorizadora do Lambda baseada em solicitação.

Resolução

Revise a configuração do autorizador do Lambda

1.    Abra o console do API Gateway.

2.    No painel APIs, escolha o nome da sua API.

3.    No painel de navegação, abaixo do nome da sua API, escolha Autorizadores. A página Autorizadores é exibida.

4.    Revise a configuração do autorizador para uma das seguintes opções com base em seu caso de uso:

Para autorizadores do Lambda baseados em tokens

Se a Carga de evento do Lambda estiver definida como Token, verifique o valor de Origem do token. O valor de Origem do token deve ser usado como cabeçalho da solicitação nas chamadas para sua API.

Importante: se você inseriu uma expressão regular para a Validação de token, o API Gateway valida o token em relação a essa expressão. Por exemplo, se você inseriu a expressão regular \ w{5}, somente valores de token com cadeias alfanuméricas de 5 caracteres serão validados com êxito.

-ou-

Para autorizadores do Lambda baseados em parâmetros de solicitação

Se a Carga de evento do Lambda estiver definida como Solicitação, verifique as Origens de identidade configuradas. As origens de identidade podem ser cabeçalhos, strings de consulta, strings de consulta com vários valores, variáveis de estágio ou variáveis $context.

Importante: se o Armazenamento em cache de autorização estiver ativado, as solicitações à sua API serão validadas em todas as origens de identidade configuradas.

5.    Se você tiver o Armazenamento em cache de autorização ativado (por exemplo, “Autorização em cache por 1 minuto”), desative o cache para testes na próxima etapa.

Para obter mais informações, consulte Configurar um autorizador do Lambda usando o console do API Gateway.

Implantar sua API

Se você alterou a configuração do autorizador do Lambda ou qualquer outra configuração de API, reimplante sua API para confirmar as alterações.

Testar seu autorizador do Lambda

Para testar seu autorizador do Lambda, faça uma chamada de teste para sua API realizando um os seguintes procedimentos:

Importante: Certifique-se de formatar a solicitação de acordo com a configuração do autorizador do Lambda.

Para testar um autorizador do Lambda usando o console do API Gateway

1.    Abra o console do API Gateway.

2.    No painel APIs, escolha o nome da sua API.

3.    No painel de navegação, abaixo do nome da sua API, escolha Autorizadores.

4.    Na página Autorizadores, escolha Testar para seu autorizador.

5.    Na caixa de diálogo Testar autorizador, faça o seguinte com base no seu caso de uso:

Para autorizadores do Lambda baseados em tokens

1.    Escolha Testar sem fornecer nenhum valor para o Token de autorização. O API Gateway retorna um Código de resposta: 401, pois o Token de autorização está vazio.

2.    Se a Validação de token com a expressão regular \ w{5} estiver configurada, insira um valor que não seja válido, como “abc123", como Token de autorização. Em seguida, escolha Testar. O API Gateway retorna um Código de resposta: 401, pois o Token de autorização não satisfaz a expressão de Validação do token.

3.    Para o valor do Token de autorização, insira allow e escolha Testar. O API Gateway retorna um Código de resposta: 200.

-ou-

Para autorizadores do Lambda baseados em parâmetros de solicitação

1.    Exclua os Parâmetros da solicitação e escolha Testar. O API Gateway retorna um Código de resposta: 401, pois os Parâmetros de solicitação não foram informados.

2.    Em Parâmetros de solicitação, insira headerValue1, queryValue1 e stageValue1 e escolha Testar. O API Gateway retorna um Código de resposta: 200.

Para testar um autorizador do Lambda usando Postman ou curl

Para obter instruções sobre como testar um autorizador do Lambda usando o aplicativo Postman, consulte Chamar uma API com autorizadores do Lambda do API Gateway.

Para obter mais informações sobre curl, consulte o site do projeto cURL.

Observação:

  • Se você desativou o Armazenamento em cache de autorização do seu autorizador do Lambda antes do teste, ele poderá ser reativado após o teste. Se você reativar o Armazenamento em cache de autorização, certifique-se de reimplantar sua API para confirmar as alterações.
  • Se você receber erros de Cross-Origin Resource Sharing (CORS) do autorizador do Lambda, você pode adicionar os cabeçalhos CORS para as respostas DEFAULT 4XX do API Gateway. Para obter mais informações, consulte Como soluciono erros de CORS da minha API do API Gateway?

Informações relacionadas

Controle e gerenciamento do acesso a uma API REST no API Gateway

Como faço para ativar o Amazon CloudWatch Logs para solucionar problemas com minha API REST do API Gateway ou API WebSocket?