В настоящее время я использую Hosted Cognito UI с пулом пользователей. Используя домен, указанный в настройках пула, я могу отправлять пользователей на экран входа в систему:
https://<domain>.auth.eu-west-1.amazoncognito.com/login?response_type=code&client_id=<client_id>&redirect_uri=<redirect_uri>
После успешного ввода имени пользователя и пароля Cognito теперь перенаправляет на URL, как указано в настройках пула и в приведенном выше URL-адресе. Это указывает на / GET в API Gateway, для которого включена авторизация через AWS Cognito. Однако мне всегда отказывают в доступе:
{"message":"Unauthorized"}
Обратите внимание, что если я:
curl --header "Authorization: <the authorization token>" https://<the redirect url>
тогда я авторизируюсь и получаю желаемый результат от API Gateway.
Я предполагаю, что что-то не так при передаче токена авторизации из Cognito в API Gateway. Мои настройки следующие:
Настройки шлюза API
/ GET Запрос метода
Authorization: my-cognito-user-pool
OAuth Scope: None
Request Validator: Validate query string parameters and headers
API Key Required: false
*HTTP Request Headers*
Name: Authorization, Required:N, Caching:N
/ GET Запрос на интеграцию
Integration Type: Lambda Function
Use Lamba Proxy Integration: N
Lambda Region: eu-west-1
Lambda Function: my-lambda-function
Invoke with caller credentials: N (it does not allow me to check this box)
Use Default Timeout: Y
*HTTP Headers*
Name: Authorization, Mapped From: method.request.header.Authorization, Caching: N
Настройки Cognito
Спасибо !!