Solução de problemas com os autorizadores JWT da API HTTP - Amazon API Gateway

Solução de problemas com os autorizadores JWT da API HTTP

O tópico a seguir fornece orientações para a solução de erros e problemas que podem ser encontrados durante o uso dos autorizadores JSON Web Token (JWT) com APIs HTTP.

Problema: minha API retorna 401 {"message":"Unauthorized"}

Verifique o cabeçalho www-authenticate na resposta da API.

O comando a seguir usa curl para enviar uma solicitação para uma API com um autorizador de JWT que usa $request.header.Authorization como sua origem de identidade.

$curl -v -H "Authorization: token" https://api-id.execute-api.us-west-2.amazonaws.com/route

A resposta da API inclui um cabeçalho www-authenticate.

... < HTTP/1.1 401 Unauthorized < Date: Wed, 13 May 2020 04:07:30 GMT < Content-Length: 26 < Connection: keep-alive < www-authenticate: Bearer scope="" error="invalid_token" error_description="the token does not have a valid audience" < apigw-requestid: Mc7UVioPPHcEKPA= < * Connection #0 to host api-id.execute-api.us-west-2.amazonaws.com left intact {"message":"Unauthorized"}}

Nesse caso, o cabeçalho www-authenticate mostra que o token não foi emitido para um público válido. Para o API Gateway autorizar uma solicitação, a declaração aud ou client_id do JWT deve corresponder a uma das entradas de público configuradas para o autorizador. O API Gateway valida client_id somente se aud não estiver presente. Quando aud e client_id estão presentes, o API Gateway avalia aud.

Também é possível decodificar um JWT e verificar se ele corresponde ao emissor, ao público e aos escopos que a API exige. O site jwt.io pode depurar JWTs no navegador. A OpenID Foundation mantém uma lista de bibliotecas para trabalhar com JWTs.

Para saber mais sobre os autorizadores JWT, consulte Controlar o acesso a APIs HTTP com autorizadores JWT no API Gateway.