
Практическое введение в AWS Cognito с помощью javascript.
AWS Cognito — это сервис для всего, что связано с учетными записями пользователей в любом приложении, будь то вход/вход, синхронизация пользовательских данных между устройствами, политики паролей, настраиваемая аутентификация и т. д.
AWS Cognito состоит из двух основных компонентов: пула пользователей и пула удостоверений. Пул пользователей находится, предлагает все, что связано с управлением учетными записями пользователей, и помогает в аутентификации. Напротив, пул идентификаторов имеет дело с контролем доступа к различным ресурсам для конкретного пользователя.
Мы проведем базовую демонстрацию Cognito. Во-первых, вам нужно будет создать учетную запись AWS и привязать к ней кредитную карту (дебетовая карта у меня не работала). Используйте службы уровня бесплатного пользования для демонстрации.
Вот пошаговое руководство по настройке Cognito.
- Перейдите на страницу Cognito и нажмите «управление пулом пользователей».
- Нажмите «Создать пул пользователей», назовите его и нажмите «Просмотреть значения по умолчанию».
- На новой странице вы можете настроить такие конфигурации, как политика паролей и т. д., но для простоты нажмите «создать пул» и сохраните идентификатор пула для использования.
- Перейдите в раздел «Клиенты приложений» и нажмите «Добавить клиент приложения».
- Дайте «Имя клиента приложения» и снимите флажок «Создать секрет клиента». Потому что, согласно документации AWS, «при создании приложения флажок «Создать секрет клиента» должен быть снят, поскольку JavaScript SDK не поддерживает приложения, у которых есть секрет клиента».
- Нажмите «Создать клиент приложения» и сохраните идентификатор клиента приложения для использования в коде.
- Теперь мы создадим пул удостоверений, перейдем к cognito и щелкнем управление пулом удостоверений.
- Вставьте имя пула удостоверений, разверните вкладку аутентификации и выберите cognito.
- Теперь он запросит идентификатор пула пользователей и идентификатор клиента приложения, мы получили их на предыдущих шагах.
- На следующей странице «Вашим удостоверениям Cognito требуется доступ к вашим ресурсам» обратите внимание на роли IAM, которые будут созданы для пользователей, прошедших и не прошедших проверку подлинности, как показано ниже.
Необходимая политика ролей IAM должна быть предоставлена эти роли. В этом примере аутентифицированной роли пользователя, которая называется «Cognito_MSNIdentityPoolAuth_Role», будет предоставлен полный доступ к AWS S3. Это будет сделано на следующем шаге. Нажмите «Разрешить», чтобы завершить создание Identity Pool. - После создания перейдите на панель инструментов созданного пула удостоверений, нажмите «Редактировать пул удостоверений» и скопируйте «Идентификатор пула удостоверений», как показано ниже.
- Теперь мы будем использовать userPoolId, clientId, region и identityPoolId в нашем коде javascript для использования таких сервисов когнито, как регистрация, подпись, OPT.
Теперь, когда AWS cognito настроен, мы будем использовать javascript для создания страницы управления пользователями, эта страница будет обрабатывать создание учетной записи пользователя, обработку OPT, вход в систему и т. д.
Мы рассмотрим основные встроенные функции на абстрактном уровне, функции, которые будут выполнять операции. Сначала нам нужно будет инициализировать наши учетные данные для доступа к когнито.

Теперь для регистрации пользователя мы будем использовать встроенную функцию userPool.signup с необходимыми учетными данными, предоставленными пользователем. После отправки полей электронной почты и пароля мы попросим пользователя подтвердить адрес электронной почты, отправив OTP.

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

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

Это была абстрактная логика того, как cognito может быть сконфигурирован и использован приложениями.