Как сделать данные пользователя AWS Cognito доступными для Lambda через API-шлюз без авторизатора? - PullRequest
0 голосов
/ 06 января 2020

У меня есть веб-сайт, который использует AWS Cognito (через Amplify) для входа в систему. API находится в отдельном стеке, который развертывается с помощью Serverless.

Я пытаюсь создать конечную точку API, которая может получить доступ к данным пула Cognito User Pool текущего пользователя (имя пользователя, адрес электронной почты) , если оно доступно . Единственный способ добиться этого - использовать авторизатор пула пользователей cognito через API Gateway.

Пример:

functions:
  getMe:
    handler: /endpoints/myService.get
    events:
      - http:
          path: /myService
          method: GET
          cors: true
          authorizer:
            type: COGNITO_USER_POOLS
            authorizerId: ${self:custom.apiGatewayAuthorizerId.${self:custom.stage}}

Где для authorizerId задан 6-значный идентификатор авторизатора, найденный на странице авторизаторов API шлюза консоли AWS. Однако этот блокирует весь трафик c, который не аутентифицирован с помощью Cognito . Это не то, чего я хочу, так как у меня есть ряд служб, которые должны быть доступны как анонимным, так и зарегистрированным пользователям. Я просто хочу персонализировать данные для пользователей, которые вошли в систему.

Есть ли способ разрешить traffi c и передавать параметры пользователя Cognito через шлюз API в Lambda , если они доступны? ?

Все ресурсы, которые я смог найти в отношении Cognito + API Gateway + Lambda, конкретно касаются ограничения доступа к конечным точкам и не наложения данных на запросы ...

1 Ответ

1 голос
/ 09 января 2020

Исходя из приведенных выше комментариев, вы хотите, чтобы анонимные и вошедшие в систему пользователи проходили через одну и ту же конечную точку шлюза?

Вы по-прежнему можете использовать ту же настройку, но удалить аутентификацию из API-шлюза и получить логи c в своем приложении.

Если пользователи попытаются получить доступ к вашим службам во время входа в систему AWS, ampify отправит через заголовок авторизации с токеном Id в API-шлюз, а API-шлюз передаст этот заголовок так же, как и приложению. Вам нужно будет проверить в своем приложении этот заголовок авторизации и взломать пройденный токен Id, чтобы найти утверждения / атрибуты пользователя и выполнить логи c. Любой другой пользователь, у которого нет этого токена, может считаться анонимным.

Вам по-прежнему необходимо проверить токен, если вы найдете его в запросе, чтобы убедиться, что он является действительным токеном, и затем извлечь утверждения / атрибуты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...