

# HTTP API JWT 권한 부여자 관련 문제 해결
<a name="http-api-troubleshooting-jwt"></a>

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

## 문제: 내 API가 `401 {"message":"Unauthorized"}`를 반환합니다.
<a name="http-api-troubleshooting-jwt.unauthorized"></a>

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`의 유효성을 검사합니다. `aud`와 `client_id`가 모두 있는 경우 API Gateway는 `aud`의 유효성을 검사합니다.

JWT를 디코딩하고 API에 필요한 발행자, 대상 및 범위와 일치하는지 확인할 수도 있습니다. 웹사이트 [jwt.io](https://jwt.io/)는 브라우저에서 JWT를 디버깅할 수 있습니다. OpenID Foundation에는 [JWT 작업을 위한 라이브러리 목록](https://openid.net/developers/jwt-jws-jwe-jwk-and-jwa-implementations/)이 포함되어 있습니다.

JWT 권한 부여자에 대한 자세한 내용은 [API Gateway에서 JWT 권한 부여자를 사용하여 HTTP API에 대한 액세스 제어](http-api-jwt-authorizer.md) 단원을 참조하세요.