HTTP API JWT 권한 부여자 관련 문제 해결 - Amazon API Gateway

HTTP API JWT 권한 부여자 관련 문제 해결

다음은 HTTP API에서 JSON Web Token(JWT) 권한 부여자를 사용할 때 발생할 수 있는 오류 및 문제에 대한 문제 해결 조언을 제공합니다.

문제: 내 API가 401 {"message":"Unauthorized"}를 반환합니다.

API의 응답에서 www-authenticate 헤더를 확인합니다.

다음 명령은 curl을 사용하여 $request.header.Authorization을 ID 소스로 사용하는 JWT 권한 부여자를 통해 API에 요청을 보냅니다.

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

API의 응답에는 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"}}

이 경우 www-authenticate 헤더는 유효한 대상에게 토큰이 발급되지 않았음을 나타냅니다. API Gateway에서 요청을 승인하려면 JWT의 aud 또는 client_id 클레임이 권한 부여자에 대해 구성된 대상 항목 중 하나와 일치해야 합니다. API Gateway는 aud가 존재하지 않는 경우에만 client_id의 유효성을 검사합니다. audclient_id가 모두 있는 경우 API Gateway는 aud의 유효성을 검사합니다.

JWT를 디코딩하고 API에 필요한 발행자, 대상 및 범위와 일치하는지 확인할 수도 있습니다. 웹사이트 jwt.io는 브라우저에서 JWT를 디버깅할 수 있습니다. OpenID Foundation에는 JWT 작업을 위한 라이브러리 목록이 포함되어 있습니다.

JWT 권한 부여자에 대한 자세한 내용은 API Gateway에서 JWT 권한 부여자를 사용하여 HTTP API에 대한 액세스 제어 단원을 참조하세요.