Интеграция 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 указано, что интеграция отключена:
Для включения интеграции необходимо установить integrations.keycloakAdmin.enabled=true
, а также задать остальные свойства (url
, user
, password
), необходимые для установки связи с Keycloak и выполнения операций с помощью административного API.
Для наглядности приведен docker-compose файл микросервиса keycloak используемого при локальной разработке:
Создание нового пользователя
При создании нового пользователя в ECOS, синхронизация с Keycloak происходит по следующим полям:
id
firstName
lastName
personDisabled
Созданный пользователь по умолчанию получает пароль, совпадающий с его id. При первом входе в приложение будет предложено изменить пароль.
Обновление пользователя
При обновлении существующего пользователя в ECOS, синхронизация с Keycloak происходит по следующим полям:
firstName
lastName
personDisabled (отключение профиля пользователя в ECOS также отключит его и в keycloak)
Смена пароля пользователя происходит через отдельное действие (см. ниже)
Удаление пользователя
При удалении пользователя из ECOS, он также удаляется из базы Keycloak
Смена пароля пользователя
Смена пароля пользователя осуществляется через вызов действия change-user-password
, с последующим вызовом формы:
Класс обработчик действия ChangePasswordActionDto
принимает id юзера и новый пароль, после чего происходит синхронизация с Keycloak.