поиск пользователей Amazon Cognito по настраиваемому атрибуту

Я разрабатываю собственное приложение для реагирования, которое использует aws-ampify для взаимодействия с Amazon Cognito. В моем случае использования мне нужно убедиться, что значение настраиваемого атрибута уникально для всех учетных записей. У aws-ampify нет API, который позволяет мне выполнять поиск по всем учетным записям с помощью настраиваемого атрибута. Как я могу это сделать?


person wseubr    schedule 14.11.2018    source источник


Ответы (2)


К сожалению, вы просто не можете использовать Cognito в одиночку:

https://docs.aws.amazon.com/cognito/latest/developerguide/how-to-manage-user-accounts.html#cognito-user-pools-searching-for-users-using-listusers-api

Пользовательские атрибуты недоступны для поиска. Это связано с тем, что для поиска доступны только индексированные атрибуты, а пользовательские атрибуты не могут быть проиндексированы.

Единственный вариант - сохранить собственную базу данных, связывающую пользователя со значением атрибута, и обеспечить в ней уникальность. Например, в DynamoDB вы должны записать sub пользователя (уникальное удостоверение Cognito) и значение настраиваемого атрибута как ключи сортировки / разделения соответственно, гарантируя, что обычные клиенты когнито могут только читать настраиваемый атрибут, и предоставить ваш собственный API (лямбда + API-шлюз), чтобы попытаться добавить / обновить таблицу, и использовать API-интерфейс администратора когнито для обновления настраиваемого атрибута «только для чтения» для пользователя.

person thomasmichaelwallace    schedule 14.11.2018
comment
В этом случае я бы не стал использовать шлюз API. Я бы использовал лямбда-триггерognito PreSignUp_SignUp для поиска в DynamoDB, а затем отклонил регистрацию в случае конфликта. Затем я бы использовал лямбда-триггерognito PostConfirmation_ConfirmSignUp, чтобы добавить настраиваемый атрибут только что созданного пользователя. - person Bruno Negrão Zica; 02.12.2020

Правильно, вы не можете искать настраиваемый атрибут. Почему вы не можете использовать один из стандартных атрибутов AWS Cognito для заполнения так же, как настраиваемый атрибут. Просто мысль. Затем вы можете выполнить поиск, чтобы проверить его уникальность.

Стандартные атрибуты:

имя пользователя (с учетом регистра)

электронное письмо

телефонный номер

название

собственное имя

фамилия

предпочтительное_имя_пользователя

когнито: user_status (называется статусом в консоли) (без учета регистра)

статус (в консоли называется "Включено") (с учетом регистра)

суб

person tarunM    schedule 15.03.2019