Skip to content

Latest commit

 

History

History
70 lines (45 loc) · 4.51 KB

keycloak_ecos_integration.rst

File metadata and controls

70 lines (45 loc) · 4.51 KB

Интеграция 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 указано, что интеграция отключена:

_static/keycloak_ecos_integration/01.png

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

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

_static/keycloak_ecos_integration/02.png

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

  • id
  • firstName
  • lastName
  • email
  • personDisabled

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

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

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

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

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

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

_static/keycloak_ecos_integration/03.png

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