Интеграция Citeck с сервисом аутентификации Keycloak ===================================================== .. contents:: :depth: 3 Начиная с версии 2.20.0 микросервиса **ecos-model**, в приложение Citeck была добавлена возможность интеграции с сервисом аутентификации **Keycloak**. Настройка интеграции осуществляется через свойства в ``application.yml``. Интеграция позволяет синхронизировать создание, обновление и удаление пользователей с сервисом аутентификации. До этого момента, например, после создания пользователя в ECOS, приходилось заходить в веб-интерфейс Keycloak и добавлять этого же пользователя вручную. Для реализации данного функционала, в **dependencies** микросервиса **ecos-model** была добавлена библиотека **“Keycloak Admin Client“**. Класс, отвечающий за синхронизацию - ``KeycloakUserService``. Синхронизация с Keycloak происходит через RESTful API. Keycloak предоставляет RESTful интерфейс, который позволяет взаимодействовать с сервером Keycloak для управления пользователями, клиентами, ролями и другими аспектами безопасности. Включение интеграции ------------------------- По умолчанию в ``application.yml`` микросервиса **emodel** указано, что интеграция отключена: .. image:: _static/keycloak_ecos_integration/01.png :width: 300 :align: center Для включения интеграции необходимо установить ``integrations.keycloakAdmin.enabled=true``, а также задать остальные свойства (``url``, ``user``, ``password``), необходимые для установки связи с Keycloak и выполнения операций с помощью административного API. Для наглядности приведен docker-compose файл микросервиса keycloak используемого при локальной разработке: .. image:: _static/keycloak_ecos_integration/02.png :width: 300 :align: center Создание нового пользователя ------------------------------ При создании нового пользователя в Citeck, синхронизация с Keycloak происходит по следующим полям: - id - firstName - lastName - email - personDisabled Созданный пользователь по умолчанию получает пароль, совпадающий с его id. При первом входе в приложение будет предложено изменить пароль. Обновление пользователя ------------------------ При обновлении существующего пользователя в Citeck, синхронизация с Keycloak происходит по следующим полям: - firstName - lastName - email - personDisabled (отключение профиля пользователя в Citeck также отключит его и в keycloak) Смена пароля пользователя происходит через отдельное действие (см. ниже) Удаление пользователя ----------------------- При удалении пользователя из Citeck, он также удаляется из базы Keycloak Смена пароля пользователя -------------------------- Смена пароля пользователя осуществляется через вызов действия ``change-user-password``, с последующим вызовом формы: .. image:: _static/keycloak_ecos_integration/03.png :width: 400 :align: center Класс обработчик действия ``ChangePasswordActionDto`` принимает id пользователя и новый пароль, после чего происходит синхронизация с Keycloak.