Интеграция Ecos с сервисом аутентификации Keycloak

Начиная с версии 2.20.0 микросервиса ecos-model, в приложение ECOS была добавлена возможность интеграции с сервисом аутентификации Keycloak. Настройка интеграции осуществляется через свойства в application.yml.

Интеграция позволяет синхронизировать создание, обновление и удаление пользователей с сервисом аутентификации. До этого момента, например, после создания пользователя в ECOS, приходилось заходить в веб-интерфейс Keycloak и добавлять этого же пользователя вручную.

Для реализации данного функционала, в “dependencies” микросервиса ecos-model была добавлена библиотека “Keycloak Admin Client“. Класс, отвечающий за синхронизацию - KeycloakUserService. Синхронизация с Keycloak происходит через RESTful API. Keycloak предоставляет RESTful интерфейс, который позволяет взаимодействовать с сервером Keycloak для управления пользователями, клиентами, ролями и другими аспектами безопасности.

Включение интеграции

По умолчанию в application.yml микросервиса emodel указано, что интеграция отключена:

../_images/011.png

Для включения интеграции необходимо установить integrations.keycloakAdmin.enabled=true, а также задать остальные свойства (url, user, password), необходимые для установки связи с Keycloak и выполнения операций с помощью административного API.

Для наглядности приведен docker-compose файл микросервиса keycloak используемого при локальной разработке:

../_images/021.png

Создание нового пользователя

При создании нового пользователя в ECOS, синхронизация с Keycloak происходит по следующим полям:

  • id

  • firstName

  • lastName

  • email

  • personDisabled

Созданный пользователь по умолчанию получает пароль, совпадающий с его id. При первом входе в приложение будет предложено изменить пароль.

Обновление пользователя

При обновлении существующего пользователя в ECOS, синхронизация с Keycloak происходит по следующим полям:

  • firstName

  • lastName

  • email

  • personDisabled (отключение профиля пользователя в ECOS также отключит его и в keycloak)

Смена пароля пользователя происходит через отдельное действие (см. ниже)

Удаление пользователя

При удалении пользователя из ECOS, он также удаляется из базы Keycloak

Смена пароля пользователя

Смена пароля пользователя осуществляется через вызов действия change-user-password, с последующим вызовом формы:

../_images/03.png

Класс обработчик действия ChangePasswordActionDto принимает id юзера и новый пароль, после чего происходит синхронизация с Keycloak.