Проблема была конкретно в утилите API Gateway Test.
В моей лямбда-функции
if (!event.requestContext.authorizer) {
errorResponse('Authorization not configured', context.awsRequestId, callback);
return;
}
Сработало, потому что заголовок Authorization не может быть передан в утилиту Method Test, а также по какой-то причине получил идентификатор Cognito.
Когда я удалил эту строку, я получил ответ УСПЕХА. Когда я возвращаю событие, которое было передано в лямбду, я не получил «authorizer» в requestContext.
Это привело меня к мысли, что Авторизация не функционировала правильно. Я полностью удалил заголовок авторизации и токен и получил такой же успешный лямбда-ответ с тем же requestContext.
Когда я вернулся в свое приложение, я получил эту ошибку, когда у меня нет идентификатора авторизации:
'{"message":"Unauthorized"}'
Когда я добавляю Авторизацию, я получаю успешный лямбда-запрос с этим в контексте запроса:
"authorizer":
{"claims":
{"sub":"ba<>",
"aud":"4v<>",
"email_verified":"true",
"event_id":"<>",
"token_use":"id",
"auth_time":"1530899925",
"iss":"https://cognito-idp.<region>.amazonaws.com/<cognito-id>",
"cognito:username":"tester",
"exp":"<>",
"iat":"<>",
"email":"<>@<>"}},
"resourcePath":"/<>",
"httpMethod":"POST",
"extendedRequestId":"<>",
"requestTime":"<>",
"path":"<>",
"accountId":"<>",
В моем приложении требуется авторизация, и возвращается соответствующий контекст.
В этом случае проблемы авторизации Cognito относятся исключительно к тесту шлюза API.