0

Я прочитал доступные документы AWS Cognito, но я не уверен, насколько я понимаю, как наилучшим образом реализовать функцию «поиска пользователей»: я хочу, чтобы пользователи могли выполнять поиск друг для друга и просматривать профили пользователей друг друга.Amazon Cognito: поиск пользователей по функциональности в приложении

два конкретных требования:

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

Как лучше подойти к этому? Я полагаю, мне нужна служба прокси-API, например. поиск по пользовательским атрибутам не поддерживается AWS Cognito. Но есть много вопросов:

  • Какой метод AWS Api и аутентификации должен использовать мой прокси-API для подключения к службе AWS Cognito?
  • должен ли прокси-API просто пытаться использовать функцию синхронизации Cognito для поддержки всех пользователей? Ненужный риск?
  • SSL-интерфейс Cognito по умолчанию включен, так что прокси-API может безопасно подключаться?
  • Должен ли я использовать прокси-API вообще?

ответ

1

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

Обновление с более конкретными деталями, согласно запросу:

Грубый набросок, который приходит на ум:

1) на стороне клиента, как только обновление атрибутов называется вы строите в новом крюком, который будет обновлять некоторые отдаленные хранилище данных (Elastisearch, Dynamo ... и т. д.).

2) Это хранилище данных должно, вероятно, поддерживаться шлюзом API, используя токен доступа Cognito в качестве механизма аутентификации вокруг него.

3) Другой API для запроса этого хранилища данных может быть также встроен в шлюз API, используя тот же механизм аутентификации.

4) Запросы затем перейдут к этому API и могут быть перенесены на любой язык или возможности, имеющиеся в хранилище.

С его помощью вы также можете создать пользовательскую логику для тех, кто имеет доступ к чему.

+0

Я согласен : это именно то, что я описал в своем вопросе как решение. Имеет прокси-API, который позволяет пользователям выполнять поиск. Но можете ли вы сказать что-то о моих вопросах, как наилучшим образом подойти к этому?Я предложил еще одну идею, кроме того, что для заполнения API-интерфейса прокси-сервера не было перехвата или лямбда-функции: использование функции синхронизации. Что об этом? –

+0

Правильно, я понимаю, что вы предлагали, я просто объяснял тот аспект, о котором вы не упомянули, и, возможно, не замечаете. Вы можете использовать Dynamo/несколько других сервисов для зеркалирования пользовательских атрибутов, использовать ассоциативную идентификацию cognito, чтобы напрямую коснуться этого или, что более чисто, API-шлюз для создания более интеллектуального API, который будет работать с dynamo, и использовать непосредственно федеративные идентификаторы или пулы пользователей напрямую для аутентификации этого вызова. –

+0

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

0

Я использовал функцию лямбда, которую я создал, вызвал listUsersLambda и функцию CognitoCredentialServiceProvider.listUsers. и, к моему удивлению, он перечислял пользователей, но не атрибуты, которые помогли бы кому-то определить, кто они такие - например, узнайте, как emailId выбрать suer для отправки уведомлений, но по крайней мере мы можем выбрать пользователя congnito по имени пользователя и т. д.

+0

Спасибо за ваш ответ, я не уверен, что все это понимаю: вы предлагаете перечислить всех пользователей cognito с помощью «listUsers», а затем отфильтровать те, которые вы действительно хотите вернуть? В основном вместо того, чтобы иметь прокси-службу поиска пользователей, просто есть функция прокси, которая фильтрует всех пользователей «на лету»? Самая большая проблема: «listUsers» не может вернуть более 1000 пользователей одновременно, поэтому вам придется делать много запросов с большой пользовательской базой. –

Смежные вопросы