Начиная с версии 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.