Пользователи Cognito в многопользовательском веб-приложении

Мы хотим реализовать мультитенантное приложение, в котором мы хотим использовать:

  • AWS Cognito как наш пул пользователей
  • AWS DynamoDB для большей части наших данных

Поскольку мы следуем объединенному подходу, наши данные DynamoDB будут иметь tenantID в качестве основного ключ. Также все пользователи объединены в один пул пользователей когнитивного анализа.

Наше приложение также должно отображать наших пользователей внутри приложения, поэтому мне нужно запросить пользователей.

Я хотел бы напрямую запросить пул AWS Cognito и отобразить всех пользователей клиента. Поэтому я бы добавил атрибут пользователям когнитивных данных custom:tenantID.

Но есть проблема: настраиваемые атрибуты не с возможностью поиска / фильтрации, поэтому я не могу выполнить запрос на основе идентификатора tenantID, что я бы сделал со всеми другими таблицами данных.

Я думал о «неправильном использовании» одного из доступных для поиска полей данных, например фамилии, для арендатора, но это кажется плохой идеей.

Я бы не хотел создавать таблицу DynamoDB с единственной целью - привязать пользователя к клиенту. Какие есть подходы к решению этой проблемы?


person pfried    schedule 07.10.2017    source источник


Ответы (1)


При использовании AWS Cognito для мультитенантного приложения используйте Cognito только для аутентификации.

Вы можете создать таблицу пользователей со списком управления доступом (авторизацией) для каждого клиента, хранящегося в таблице DynamoDB, которую вы также можете использовать для поиска пользователей и т. Д.

Если вы используете в Cognito настраиваемый атрибут под названием tenant или store tenant identifier, помимо ограничения поиска, вы также ограничиваете пользователя одним арендатором.

person Ashan    schedule 07.10.2017
comment
Можете ли вы порекомендовать атрибут для использования в качестве идентификатора пользователя? адрес электронной почты ? Cognito ID? Знаете ли вы какие-нибудь реальные примеры решения, подобного вашему предложению? - person pfried; 08.10.2017
comment
Если вы планируете использовать Cognito Identity Pool, используйте CognitoID (здесь Cognito Identity. С Cognito Userpools вы можете использовать адрес электронной почты (если электронная почта является обязательной для идентификации пользователя как для локальных, так и для федеративных). Не удалось найти технический документ напрямую решая эту проблему, но в целом для мультитенантных приложений обратитесь к следующим двум техническим документам: d0.awsstatic. ru / whitepapers / d0.awsstatic.com/ whitepapers / saas-solutions-on-aws-final.pdf - person Ashan; 08.10.2017