Интеграция с Keycloak

Центральный Пульт поддерживает авторизацию посредством сервера Keycloak.

Поддерживается интеграция только с Keycloak версии 21.1.1.

Настройка сервера

Для настройки взаимодействия между сервером системы Центральный Пульт и внешним сервером Keycloak необходимо получить хотя бы один из параметров:

  • Realm Certificate, которым сервер Keycloak подписывает пользовательские токены,

  • файл настроек соединения для Backend-клиента.

Настройка клиента и получение параметров осуществляются в консоли администратора Keycloak.

Realm Certificate

Для получения Realm Certificate необходимо:

  1. Выбрать требуемую область (Realm) из списка (здесь - SAYMON):

    image
    Выбор области в Keycloak
  2. В секции Realm settings на вкладке Tokens уточнить алгоритм подписи токенов в поле Default Signature Algorithm (здесь - RS256):

    image
    Выбор алгоритма подписи токенов
  3. На вкладке Keys найти cертификат для данного алгоритма:

    image
    Вкладка Keys
  4. Кнопка image в соответствующей строке открывает искомый сертификат:

    image
    Сертификат ключа на вкладке Keys

    Данные рекомендуется сохранить в файл keycloak_realm_certificate.

Backend-клиент

Клиенты - это параметры соединения с Keycloak-сервером для внешних приложений, которые авторизуют пользователей.

Главной особенностью Backend-клиента является наличие собственной аутентификации: такой клиент получает конфиденциальный доступ по секретному ключу.

Для настройки Backend-клиента необходимо:

  1. Выбрать требуемую область (Realm) из списка (здесь - SAYMON):

    image
    Выбор области в Keycloak
  2. В секции Clients нажать кнопку image:

    image
    Секция Clients
  3. Ввести имя Backend-клиента в поле Client ID:

    image
    Создание клиента, вкладка General Settings

    и нажать кнопку image.

  4. Слайдер Client authentication установить в положение On:

    image
    Создание клиента, вкладка Capability config

    и нажать кнопку image.

  5. B списке Action выбрать Download adapter config:

    image
    Кнопка Download adapter config
  6. Нажать кнопку image, чтобы получить файл настроек соединения для Backend-клиента в формате JSON:

    image
    Файл настроек соединения для Backend-клиента

Конфигурация сервера Центральный Пульт

Для взаимодействия с сервером Keycloak на сервере "Центральный Пульт" необходимо:

  1. Добавить раздел Keycloak в конфигурационный файл сервера /etc/saymon/saymon-server.conf:

    "keycloak": {
      "realm_certificate": "<данные keycloak_realm_certificate>",
      "realm_certificate_file": "/etc/saymon/keycloak_realm_certificate",
      "config_file": "/etc/saymon/keycloak_backend.json"
    }

    где:

    • realm_certificate - данные Keycloak Realm Certificate;

    • realm_certificate_file - путь к файлу с Keycloak Realm Certificate;

    • config_file - путь к файлу настроек соединения, сгенерированному сервером Keycloak для Backend-клиента.

      Параметры перечислены в порядке понижения приоритета при одновременном указании. Для работы с Keycloak достаточно указать один из параметров.
  2. Перезапустить службу saymon-server:

    $ sudo service saymon-server restart

Настройка web-интерфейса

Для возможности авторизации пользователей посредством Keycloak через web-интерфейс системы Центральный Пульт необходимо получить файл настроек соединения Frontend-клиента.

Настройка клиента и получение файла настроек соединения осуществляются в консоли администратора Keycloak.

Frontend-клиент

Главной особенностью Frontend-клиента является отсутствие собственной аутентификации: данный клиент получает публичный доступ.

Для настройки Frontend-клиента необходимо:

  1. Выбрать требуемую область (Realm) из списка (здесь - SAYMON):

    image
    Выбор области в Keycloak
  2. В секции Clients нажать кнопку image:

    image
    Секция Clients
  3. Ввести имя Frontend-клиента в поле Client ID:

    image
    Создание клиента, вкладка General Settings

    и нажать кнопку image.

  4. Слайдер Client authentication установить в положение Off:

    image
    Создание клиента, вкладка Capability config

    и нажать кнопку image.

  5. На вкладке Settings в разделе Access settings указать корректные URI-адреса, с которых будет осуществляться доступ к Keycloak-серверу, и на которые будут перенаправляться пользователи после успешной аутентификации и выхода:

    image
    Раздел Access Settings

    и нажать кнопку image.

  6. B списке Action выбрать Download adapter config:

    image
    Кнопка Download adapter config
  7. Нажать кнопку image, чтобы получить файл настроек соединения для Frontend-клиента в формате JSON:

    image
    Файл настроек соединения для Frontend-клиента

Конфигурация web-интерфейса системы Центральный Пульт

Для активации формы авторизации через Keycloak в web-интерфейсе системы необходимо:

  1. Добавить на сервере системы Центральный Пульт раздел Authentication в конфигурационный файл клиента /etc/saymon/saymon-client.yaml:

    authentication:
      availableMethods:
        - native
        - keycloak
      methodByDefault: keycloak
      services:
        keycloak:
          configUri: saymon.local/keycloak_frontend.json
          legacySupport: false

    где:

    • availableMethods - список доступных для пользователей методов аутентификации;

    • methodByDefault - метод аутентификации, который будет предложен пользователю сразу при отображении аутентификационной формы;

    • configUri - файл настроек соединения, сгенерированный сервером Keycloak для Frontend-клиента.

      Файл настроек соединения для Frontend-клиента необходимо поместить в каталог /etc/saymon.
  2. Обновить страницу системы Центральный Пульт в web-браузере.