Перейти к основному содержимому

Настройка двухфакторной аутентификации Keycloak

Общая информация

В статье описывается настройка Keycloak для доступа к корпоративным приложениям.

Возможные способы аутентификации:

  • Мобильное приложение MultiFactor
  • Telegram
  • СМС
  • Биометрия
  • Аппаратные OTP токены
  • Приложения OTP: Google Authenticator или Яндекс.Ключ

Схема работы

  1. Пользователь открывает корпоративное приложение;
  2. Keycloak запрашивает логин первый фактор аутентификации: логин и пароль, проверяет корректность указанных данных и, если данные верны, переходит ко второму этапу аутентификации;
  3. На втором этапе открывается окно проверки второго фактора Мультифактор, в котором пользователю предлагается подтвердить доступ;
  4. Пользователь подтверждает второй фактор доступа и переходит к работе с приложением.

Для настройки второго фактора аутентификации вам потребуется установить и настроить на сервере 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

  1. Внесите изменения keycloak.version в pom.xml в соответствии с вашей конкретной версией Keycloak (в настоящее время используется версия 26.0.1), затем соберите компонент:
$ mvn clean install
  1. В разделе Realm Settings -> Security Defenses -> Content-Security-Policy добавьте MultiFactor в качестве надежного источника:
frame-src https://*.multifactor.ru/ 'self';
  1. В разделе Authentication -> Flow выберите Browser и выполните Action -> Duplicate (Скопировать) для создания копии потока;

Выберите Copy of browser и добавьте новый шаг:

  • Нажмите Add step.
  • Выберите Copy of browser forms.
  • В добавленных шагах выберите **MultiFactor из списка и добавьте его после Username Password Form.
  1. В столбце Requirement для шага MultiFactor выберите REQUIRED (Обязательный).

  1. Перейдите в Настройки для «Multifactor» и введите следующие значения:
  • API key: значение из ранее созданного ресурса;
  • API secret: значение из ранее созданного ресурса;
  • API URL: https://api.multifactor.ru
  1. Создание групп для пользователей и администраторов Перейдите в Groups и создайте две группы:
  • Admins — для администраторов, которым 2FA не требуется.
  • Users — для обычных пользователей, для которых будет использоваться 2FA.

ерейдите в раздел Users и добавьте каждого пользователя в соответствующую группу:

  • Пользователей, которым требуется 2FA, добавьте в Users;
  • Администраторов добавьте в Admins.
  1. Привязка потока аутентификации Перейдите в настройки клиента в Authentication и выберите Copy of browser для Browser Flow.

Также можно установить новый поток глобально: В разделе AuthenticationFlows выберите Copy of browser и нажмите ActionBind flow.

  1. Результат
  • Обычные пользователи в группе RegularUsers будут обязаны проходить 2FA через MultiFactor при входе.
  • Администраторы в группе Admins смогут входить без 2FA. Эта настройка позволяет использовать 2FA выборочно только для обычных пользователей, оставляя администраторам возможность входа без дополнительной аутентификации.

Смотрите также