HTTP API JWT オーライザーに関する問題のトラブルシューティング
次に、HTTP API で JSON ウェブトークン (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
クレームが、オーソライザー用に設定されている対象者のエントリの 1 つと一致する必要があります。API Gateway は、aud
が存在しない場合にのみ、client_id
を検証します。aud
と client_id
の両方が存在する場合、API Gateway は aud
を評価します。
また、JWTをデコードし、APIが必要とする発行者、対象者、スコープと一致することを確認することもできます。ウェブサイトの jwt.io
JWT オーソライザーの詳細については、「API Gateway の JWT オーソライザーを使用して HTTP API へのアクセスを制御する」を参照してください 。