Аутентификация с паролем является, пожалуй, самым распространенным методом аутентификации. Но она не является достаточной надежной. Часто пользователи используют простые пароли или используют один и тот же пароль для разных сервисов. Таким образом пароль пользователя может быть скомпрометирован. Для увеличения безопасности в процесс аутентификации добавляют второй фактор. (Two Factor Authentication, 2FA). Второй фактор в аутентификации это дополнительный уровень защиты учетной записи. Помимо логина и пароля для аутентификации нужно ввести код из SMS, ввести биометрические данные, использовать аппаратный токен и так далее. Таким образом, даже если пароль учетной записи будет скомпрометирован, злоумышленник не сможет получит доступ к учетной записи, т.к. при аутентификации требуется пройти еще один уровень защиты. В данной статье мы настроим аутентификацию в OpenAM с использованием одноразовых кодов, сгенерированных от времени - Time-based One-Time Password Algorithm (TOTP, RFC 6238).
Если вы еще не установили OpenAM, вы можете это сделать, как описано тут.
Откройте консоль администратора по ссылке http://openam.example.org:8080/openam/console
В поле логин введите значение amadmin в поле пароль введите пароль администратора, указанный при установке.
Откройте корневой realm, в меню слева выберите Authentication → Modules и нажмите кнопку Add Module. В появившейся форме введите имя модуля, например totp и тип модуля - Authenticator (OATH). Нажмите кнопку Create.
Установите настройку OATH Algorithm to Use в TOTP, в поле Name of the Issuer любое не пустое значение, например OpenAM и нажмите Save Changes.

В консоли администратора в настройках realm в меню слева выберите Authentication → Chains и в открывшемся списке нажмите кнопку Add Chain.
Введите имя цепочки totp-register и нажмите кнопку Create.
В настройках цепочки нажмите кнопку Add a Module и добавьте созданный модуль аутентификации totp как показано на рисунке. Нажмите кнопку OK а затем Save Changes .
В консоли администратора в настройках realm в меню слева выберите Authentication → Chains и в открывшемся списке нажмите кнопку Add Chain.
Введите имя цепочки totp-login и нажмите кнопку Create. Первым добавьте модуль аутентификации с логином и паролем DataStore. Потом добавьте модуль аутентификации с одноразовым кодом totp .
Нажмите Save Changes

Скачайте на ваше мобильное устройство приложение Microsoft Authenticator или Google Authenticator.
В консоли администратора OpenAM перейдите в корневой realm, в меню слева выберите пункт Subjects. Задайте пароль для пользователя demo. Для этого выберите его в списке пользователей, и нажмите ссылку Edit в пункте Password. Введите и сохраните новый пароль. После настройки выйдите из консоли администратора.
Войдите в консоль с учетной записью тестового пользователя. Для этого выйдите из консоли администратора или откройте браузер в режиме “Инкогнито”. Перейдите по URL http://openam.example.org:8080/openam/XUI/#login/ и войдите в OpenAM с учетной записью demo. После успешной аутентификации откройте в браузере ссылку цепочки аутентификации регистрации устройства. http://openam.example.org:8080/openam/XUI/#login&service=totp-register.
Нажмите кнопку Register Device. В браузере появится QR код. Откройте мобильное приложение и нажмите кнопку добавления аккаунта. Отсканируйте QR код. В мобильное приложение аутентификатора будет добавлена учетная запись пользователя demo для OpenAM.

Затем в браузере нажмите кнопку Login Using Verification Code . Введите код из мобильного приложения и нажмите кнопку Submit .

Приложение зарегистрировано.
Выйдите из консоли OpenAM или откройте браузер в режиме “Инкогнито”. Перейдите по ссылке http://openam.example.org:8080/openam/XUI/#login&service=totp-login.
Введите логин и пароль пользователя demo. После ввода логина и пароля OpenAM запросит одноразовый пароль из мобильного приложения. Откройте мобильное приложение выберите аккаунт пользователя demo и введите в браузере одноразовый пароль из мобильного приложения и нажмите кнопку Submit. После ввода корректного одноразового пароля аутентификация завершится успешно.