Настройка двухфакторной аутентификации 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-23.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 (в настоящее время используется версия 23.0.1), затем соберите компонент:
$ mvn clean install
- В разделе Realm Settings -> Security Defenses -> Content-Security-Policy добавьте MultiFactor в качестве надежного источника:
frame-src https://*.multifactor.ru/ 'self';
- В разделе Authentication -> Flow выберите Browser и выполните Action -> Duplicate;
- В разделе Authentication -> Flow выберите Copy of browser -> Add step -> Copy of browser forms и добавьте MultiFactor из списка.
⚠️ Обратите внимание: «Multifactor» должен быть после Username Password Form;
В столбце Requirement для Multifactor укажите REQUIRED.
- Перейдите в Настройки для «Multifactor» и введите следующие значения:
- API key: значение из ранее созданного ресурса;
- API secret: значение из ранее созданного ресурса;
- API URL: https://api.multifactor.ru
- В настройках вашего клиента Keycloak в разделе Advanced -> Authentication Flow Overrides привяжите Copy of browser для Browser Flow. Также вы можете привязать новый Flow глобально: в разделе Authentication -> Flow перейдите в Copy of browser и нажмите Action -> Bind flow.