Solución de problemas con los autorizadores JWT de la API HTTP - Amazon API Gateway

Solución de problemas con los autorizadores JWT de la API HTTP

A continuación se le proporcionan consejos para solucionar errores y problemas que puedan surgir al utilizar los autorizadores de JSON Web Token (JWT) con API HTTP.

Problema: mi API devuelve 401 {"message":"Unauthorized"}

Compruebe el encabezado www-authenticate en la respuesta de la API.

El siguiente comando utiliza curl para enviar una solicitud a una API con un autorizador de JWT que utiliza $request.header.Authorization como su origen de identidad.

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

La respuesta de la API incluye un encabezado 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"}}

En este caso, el encabezado www-authenticate muestra que el token no se emitió para un destinatario válido. Para que API Gateway autorice una solicitud, la reclamación aud o client_id de JWT debe coincidir con una de las entradas de destinatario configuradas para el autorizador. API Gateway valida client_id solo si aud no está presente. Cuando aud y client_id están presentes, API Gateway evalúa aud.

También puede decodificar un JWT y comprobar que coincida con el emisor, el destinatario y los ámbitos que requiere su API. El sitio web jwt.io puede depurar JWT en el navegador. OpenID Foundation mantiene una lista de bibliotecas para trabajar con JWT.

Para obtener más información acerca de los autorizadores de JWT, consulte Control del acceso a API HTTP con autorizadores de JWT en API Gateway.