Пул пользователей Amazon Cognito - использование атрибута username для хранения пользовательских идентификаторов пользователей. - PullRequest
1 голос
/ 13 июля 2020

В Руководстве пользователя Amazon Cognito на странице « Настройка атрибутов пользовательского пула » есть этот абзац (с дополнительным выделением):

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

Я хочу делать именно то, что говорится в абзаце: пока пользователи регистрируются, создавайте в фон - собственный идентификатор пользователя для них лично, потому что мне нужно, чтобы эти идентификаторы соответствовали определенному формату c semanti c, который встраивает контекст клиента в идентификаторы (что-то вроде «T01234 # U01234567», что означает «пользователь U01234567 внутри tenant T01234 ”).

Пользователи не будут знать свой индивидуальный идентификатор, они будут чувствовать, что они зарегистрировались (а затем вошли в систему) с помощью своих электронных писем (или через третьих лиц, таких как Facebook и Google, если возможно, в этой настройке). Но в фоновом режиме я создам эти пользовательские идентификаторы и сохраню их в их атрибуте username в пользовательском пуле.

Причина, по которой я хочу хранить эти идентификаторы конкретно в атрибуте username, заключается в том, что это не - изменяемый и уникальный, но наиболее важный, потому что мне нужно будет запросить API-интерфейсы Cognito (ListUsers, AdminListGroupsForUser, et c.), используя эти пользовательские идентификаторы в качестве фильтра, чтобы предоставить моим клиентам некоторые возможности управления пользователями. Атрибут username является параметром для этих API. Поэтому я не могу использовать здесь настраиваемые атрибуты пользовательского пула, поскольку они не принимаются в качестве параметров этих API.

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

Каков его общий макет настроек? Для начала, в опции « Как вы хотите, чтобы ваши конечные пользователи регистрировались и входили в систему? », что я должен поместить туда в описанном мной сценарии? Если кто-нибудь может предоставить дополнительную относящуюся к делу информацию, это будет очень полезно, так как документация кажется непрозрачной.

Большое спасибо тем, кто это прочитал.

1 Ответ

1 голос
/ 15 июля 2020

Вероятно, вам нужно будет решить эту проблему в своем интерфейсе.

Когда ваш пользователь начнет процесс регистрации, вам нужно будет сгенерировать имя пользователя в соответствии с вашими требованиями и отправить запрос в пул пользователей Cognito, используя который сгенерировал имя пользователя + адрес электронной почты.

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

Если вы не хотите делать это во внешнем интерфейсе, вы можете создать серверную часть с доступом publi c, которая принимает неаутентифицированные запросы и выполняет эту задачу непосредственно в пуле пользователей Cognito.

...