Настройка двухфакторной аутентификации Keycloak
Общая информация
В статье описывается настройка Keycloak для доступа к корпоративным приложениям.
Возможные способы аутентификации:
Мобильное приложение MultiFactor
Telegram
СМС
Биометрия
Аппаратные OTP токены
Приложения OTP: Google Authenticator или Яндекс.Ключ
Схема работы
- Пользователь открывает корпоративное приложение;
- Keycloak запрашивает логин первый фактор аутентификации: логин и пароль, проверяет корректность указанных данных и, если данные верны, переходит ко второму этапу аутентификации;
- На втором этапе открывается окно проверки второго фактора Мультифактор, в котором пользователю предлагается подтвердить доступ;
- Пользователь подтверждает второй фактор доступа и переходит к работе с приложением.
Для настройки второго фактора аутентификации вам потребуется установить и настроить на сервере Keycloak компонент multifactor-keycloak-plugin. Компонент разработан и поддерживается компанией МУЛЬТИФАКТОР, распространяется бесплатно вместе с исходным кодом. Актуальная версия находится на GitHub: код и сборка.
Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.
Требования для установки
Компоненту необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP прокси;
Настройка Мультифактора
В системе управления Мультифактором добавьте новый ресурс «Веб-сайт», после чего Вам будут доступны ключи API Key и API Secret. Используйте формат токена доступа JwtHS256.
Установка Keycloak plugin
Загрузите файл сборки на сервер Keycloak и поместите в каталог /providers
$ cp <keycloack dir>/target/keycloak-multifactor-spi-jar-with-dependencies.jar <keycloack dir>/providers
В терминале откройте каталог keycloak-26.0.1
В Linux введите следующую команду:
# bin/kc.sh start-dev
В Windows введите следующую команду:
# bin\kc.bat start-dev
В дальнейшем для запуска в производственном режиме выполните следующую команду:
# bin/kc.[sh|bat] start
Настройка Keycloak
- Внесите изменения keycloak.version в pom.xml в соответствии с вашей конкретной версией Keycloak (в настоящее время используется версия 26.0.1), затем соберите компонент:
$ mvn clean install
- В разделе Realm Settings -> Security Defenses -> Content-Security-Policy добавьте MultiFactor в качестве надежного источника:
frame-src https://*.multifactor.ru/ 'self';
- В разделе Authentication -> Flow выберите Browser и выполните Action -> Duplicate (Скопировать) для создания копии потока;
Выберите Copy of browser и добавьте новый шаг:
- Нажмите Add step.
- Выберите Copy of browser forms.
- В добавленных шагах выберите **MultiFactor из списка и добавьте его после Username Password Form.
-
В столбце Requirement для шага MultiFactor выберите REQUIRED (Обязательный).
- Перейдите в Настройки для «Multifactor» и введите следующие значения:
- API key: значение из ранее созданного ресурса;
- API secret: значение из ранее созданного ресурса;
- API URL: https://api.multifactor.ru
- Создание групп для пользователей и администраторов Перейдите в Groups и создайте две группы:
- Admins — для администраторов, которым 2FA не требуется.
- Users — для обычных пользователей, для которых будет использоваться 2FA.
ерейдите в раздел Users и добавьте каждого пользователя в соответствующую группу:
- Пользователей, которым требуется 2FA, добавьте в Users;
- Администраторов добавьте в Admins.
- Привязка потока аутентификации Перейдите в настройки клиента в Authentication и выберите Copy of browser для Browser Flow.
Также можно установить новый поток глобально: В разделе Authentication → Flows выберите Copy of browser и нажмите Action → Bind flow.
- Результат
- Обычные пользователи в группе RegularUsers будут обязаны проходить 2FA через MultiFactor при входе.
- Администраторы в группе Admins смогут входить без 2FA. Эта настройка позволяет использовать 2FA выборочно только для обычных пользователей, оставляя администраторам возможность входа без дополнительной аутентификации.