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

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

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

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

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

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

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

Realm Certificate

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

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

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

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

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

    image

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

Backend-клиент

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

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

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

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

    image
  2. В секции Clients нажать кнопку image:

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

    image

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

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

    image

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

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

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

    image

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

Для взаимодействия с сервером 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
  2. В секции Clients нажать кнопку image:

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

    image

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

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

    image

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

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

    image

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

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

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

    image

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

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

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

    authentication:
      availableMethods:
        - "native"
        - "keycloak"
      methodByDefault: "keycloak"
        services:
          keycloak:
            configUri: keycloak_frontend.json

    где:

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

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

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

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