Использование AWS Cognito для авторизации через шлюз API - PullRequest
0 голосов
/ 13 сентября 2018

В настоящее время я использую 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

enter image description here

enter image description here

Спасибо !!

...