Как хранить пользователей AWS Cognito User Pool в БД (например, DynamoDB)? - PullRequest
3 голосов
/ 03 апреля 2019

Мне кажется, «AWS Cognito» - это «IdentityServer of AWS».Я сделал POC - создал пользователей через вызовы API регистрации.Пользователи создаются в AWS Cognito User Pool и возвращаются токены доступа.Однако, чтобы связать вещи, я хочу создать пользователей в пользовательской таблице в DynamoDB, а не в пуле пользователей.

Ожидаемый сценарий:

1) Новый пользователь -> Подписатьup -> AWS Cognito -> В DynamoDB добавляется новая запись пользователя -> AWS Cognito возвращает токен доступа

2) Существующий активный пользователь -> Вход в систему -> AWS Cognito -> пользовательские данные извлекаются из DynamoDB -> AWS Cognito

Qn -1 возвращает токен доступа: что-то похожее на создание пользователей IdentityServer в таблицах БД SQL Server.Можно ли это сделать в AWS Cognito?Можно ли обойти пользовательский пул и получить пользовательские данные из БД?Может ли пул пользователей отображать своих пользователей из таблицы БД, даже если не обойден?

Qn - 2: Где хранятся пользователи пула пользователей?В конечном счете, где-нибудь в БД?

Примечание. Следующий вопрос выглядит похожим на мой, но на него еще нет ответа:

Сеансы пользователей и хранение пользователей aws cognito в локальной БД

1 Ответ

2 голосов
/ 03 апреля 2019

Пул пользователей не может быть обойден в вашем сценарии. Однако вы можете сопоставить своего пользователя с DynamoDB и даже ограничить доступ, используя пользовательскую политику . Чтобы использовать эту политику, необходимо структурировать таблицу DynamoDB таким образом, чтобы идентификатор пользователя Cognito являлся ключом раздела.

Просто добавьте лямбда-триггер, зарегистрируйтесь и войдите, чтобы добавить пользователя в DynamoDB. Добавьте все, что вы хотите, кроме пароля, поскольку вы можете использовать cognito для аутентификации, а затем ограничить доступ к строкам по идентификатору cognito.

Что касается второй части вашего вопроса, у cognito есть собственная внутренняя таблица. AWS не уточнил, что именно они используют, но я рискну предположить, что это NoSQL из-за гибкости пользовательских атрибутов.

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