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
Para saber mais sobre os autorizadores JWT, consulte Controlar o acesso a APIs HTTP com autorizadores JWT no API Gateway.