Как мы все знаем, в наши дни управление пользователями стало гораздо более важным. В то время как некоторые компании держат своих пользователей на локальных серверах и сами обеспечивают управление пользователями, некоторые крупные компании, такие как Auth0, Okta, OneLogin, также предоставляют услуги в этой области. Когда дело доходит до управления пользователями, мы не должны думать только о сервере, на котором хранятся пользователи, но мы также должны выбрать поставщика удостоверений, который предоставит следующие моменты:

  • Механизмы аутентификации и авторизации,
  • Генерация, распространение и безопасность токенов,
  • Хранение и защита паролей,
  • API управления пользователями (регистрация, вход, забытый пароль, выход из системы и т. Д.)
  • Дополнительные механизмы безопасности (MFA, блокировка подозрительных IP-адресов, блокировка учетной записи…)

Сегодня мы обсудим один из моих любимых - AWS Cognito. AWS Cognito имеет два аспекта:

  • Пулы пользователей AWS Cognito
  • Пулы идентификации AWS Cognito

Пул пользователей AWS Cognito обеспечивает управление пользователями (регистрация, вход, выход, забытый пароль, сброс пароля и т. Д.), А также управление доступом для пользователей нашего веб-сайта и мобильных приложений быстро и легко. Он также поддерживает вход с помощью провайдеров социальной идентификации, таких как Google, Facebook, Apple и Amazon, SAML 2.0 и OpenID Connect. Нам не нужно беспокоиться о том, где хранятся пароли или информация пользователей, пулы пользователей Amazon Cognito предоставляют безопасный каталог пользователей, который масштабируется до сотен миллионов пользователей с помощью механизма JWT (JSON Web Token). Он также соответствует требованиям HIPAA, PCI DSS, SOC, ISO / IEC 27001, ISO / IEC 27018 и ISO 9001, поэтому вы можете использовать AWS Cognito с приложениями критически важной инфраструктуры. Чтобы глубже понять Cognito, давайте запачкаем руки! Для этого нам понадобится бесплатный аккаунт AWS. Вы можете получить это, выполнив действия здесь.

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

Здесь мы должны выбрать управление пулами пользователей. Если с настройками вашей учетной записи AWS нет проблем, вы можете увидеть пустую страницу «Пулы пользователей». Если произошла ошибка, проверьте настройки оплаты регистрации аккаунта AWS. На этой странице мы должны выбрать Создать пул пользователей. Мы должны дать имя нашему пулу пользователей, чтобы его можно было идентифицировать в будущем. Мы можем создать пул пользователей с возможностью просмотра настроек по умолчанию или пошаговых настроек один за другим. Я выбираю пошаговые настройки, чтобы мы могли подробно просмотреть настройки AWS Cognito.

На вкладке «Атрибуты» мы должны выбрать «Как мы хотим, чтобы наши пользователи входили в систему? Имя пользователя, адрес электронной почты или номер телефона? » Этот выбор имеет решающее значение, поскольку вы не можете изменить этот параметр после создания пула пользователей Cognito. Я выбираю Адрес электронной почты или номер телефона и параметр «Разрешить адрес электронной почты».

Какие атрибуты мы хотим получить от пользователей в процессе регистрации? Мы можем выбрать атрибуты регистрации (подписки) на той же странице. Есть два варианта: обязательные или настраиваемые атрибуты. Если вы выберете обязательные атрибуты, пользователи должны предоставить их все. С другой стороны, если вы выберете настраиваемые атрибуты, пользователи смогут отправлять их с нулевыми значениями (пусто на странице регистрации). Вы можете использовать настраиваемые атрибуты для своих настраиваемых решений для управления пользователями, баз данных или мультитенантности. Я рекомендую использовать настраиваемые атрибуты вместо обязательных, если они не критичны для целей разработки или производства. Я выбираю адрес электронной почты для обязательных атрибутов.

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

После этой страницы мы увидим страницу «MFA и проверки». Я упомяну параметры MFA в другом сообщении в блоге. Я пока пропускаю эту страницу.

На странице Настройка сообщения мы можем изменить нашу проверку пользователя, временные данные кода электронной почты. AWS Cognito использует AWS SES для операций отправки электронной почты. Здесь вы можете выбрать тип подтверждения и подробные сведения о сообщении электронной почты. Я выбираю ссылку для подтверждения и немного меняю содержание сообщения электронной почты.

Мы могли бы добавить дополнительные теги для целей управления на странице «Теги».

На странице «Устройства» вы увидите «Запомнить устройства пользователей?» вариант. Этот параметр позволяет нам собирать сведения об устройствах, на которых пользователи выполняют вход. Этот параметр может быть полезен в целях безопасности. Я выбираю здесь вариант «Всегда».

После этой страницы. мы должны увидеть критическую опцию «Клиенты приложений». Вы можете создать несколько приложений для пула пользователей. Как правило, приложение соответствует платформе приложения. Например, вы можете создать приложение для Android и в Интернете. У каждого приложения есть собственный идентификатор клиента приложения. В дополнение к этому мы могли бы установить здесь время истечения срока действия наших токенов (id, доступ и обновление) для каждого клиента приложения. Я только отключаю здесь параметр «Создать секрет клиента». Параметр секрета клиента может быть полезен при интеграции облака и облака, здесь нам не нужно значение секрета клиента.

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

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

После всего этого мы смогли успешно создать наш пул пользователей. Вы можете увидеть свой идентификатор пользовательского пула на главной странице вашего пользовательского пула.

Давайте зарегистрируем пользователя и войдем в систему. AWS Cognito предоставляет нам размещенную страницу пользовательского интерфейса для тестирования. Мы могли бы выбрать Интеграция приложений → Имя домена в левой панели на странице пользовательского пула, которую мы создали. Нам нужен домен AWS Cognito для операций входа, регистрации, забытого пароля и т. Д. Я выбираю test-medium в качестве своего доменного имени, проверяю доступность и сохраняю изменения. Вы также можете получить собственный домен с AWS ACM.

Наконец, вы должны установить обратный вызов для входа и выхода для своего клиента приложения. Я выбираю http: // localhost: 8000 для тестовых целей. После сохранения этих конфигураций вы увидите кнопку Запустить размещенный пользовательский интерфейс ниже.

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

В процессе регистрации я зарегистрировался, используя свой адрес электронной почты и пароль.

Чтобы подтвердить мой адрес электронной почты, AWS Cognito отправляет ссылку для подтверждения на мой адрес электронной почты. (Вы должны помнить, что мы настраивали эту опцию выше.)

После того, как я нажму письмо с подтверждением, AWS Cognito проверит мой адрес электронной почты, и я смогу успешно войти в систему и получить свои токены. Вы можете видеть токены на панели браузера. Кроме того, с помощью параметра «Пользователи и группы» на странице конфигурации пула пользователей вы можете увидеть весь свой список пользователей и пользовательские данные.

Больше контента на plainenglish.io