Получение идентификатора Cognito из API Gateway и Lambda - PullRequest
0 голосов
/ 10 декабря 2018

Я использую AWS Cognito, API Gateway, Lambdas и response.js (я впервые их использую).В настоящее время я работаю над реализацией страниц регистрации.Мне удалось аутентифицировать пользователя с помощью Cognito, отправить код доступа с URL-адресом в качестве заголовка на защищенный шлюз API для предоставления доступа.Это все работает нормально для меня.Моя проблема в том, как получить Cognito ID из токена доступа, отправленного из внешнего интерфейса (используя React.js) через API-шлюз, и получить его в моей лямбде, чтобы узнать идентификатор пользователя, который только что вошел в систему ??

Я обнаружил, что некоторые люди говорят о шаблоне сопоставления в запросе интеграции API-шлюза, но я не знаю, как это использовать ??и что мне написать в моей лямбде, чтобы увидеть код !!Документы AWS не дают четкого примера об этом !!

Любая помощь с кодом, пожалуйста!

1 Ответ

0 голосов
/ 12 августа 2019

Если вы используете интеграцию с Lambda Proxy, вы можете получить доступ к пользовательской информации через путь requestContext.

event.requestContext.authorizer.claims

Здесь у вас будет тело заявки, похожее на это

{
    "sub": "gae4t3qha-ha4g-j4as-12fa-gag42aerh34",
    "cognito:groups": "group1,group2",
    "email_verified": "true",
    "cognito:preferred_role": "arn:aws:iam::12345677890:role/role1",
    "iss": "https://cognito-idp.ap-southeast-2.amazonaws.com/us-west-userpoolId2gw3e4",
    "cognito:username": "example@email.com",
    "cognito:roles": "arn:aws:iam::1234567890:role/role1,arn:aws:iam::1234567890:role/service-role/role2",
    "aud": "ga32qah34wjk4trujnsa4hy",
    "event_id": "0491fe1c-6eff-4220-ae93-582588e2af0e",
    "token_use": "id",
    "auth_time": "1564962329",
    "exp": "Mon Aug 05 00:45:29 UTC 2019",
    "iat": "Sun Aug 04 23:45:29 UTC 2019",
    "email": "example@email.com" 
  }

заявки.sub действует как UUID Cognito для каждого пользователя

...