Для пользователей Центрального Пульта предусмотрена возможность авторизации посредством сервера Keycloak.
Настройка сервера
Для настройки взаимодействия между сервером Центрального Пульта и внешним сервером Keycloak необходимо получить хотя бы один из параметров:
- Realm Certificate, которым сервер Keycloak подписывает пользовательские токены,
- файл настроек соединения для Backend-клиента.
Настройка клиента и получение параметров осуществляются в консоли администратора Keycloak.
Realm Certificate
Для получения Realm Certificate необходимо:
- Выбрать требуемую область (Realm) из списка (здесь - SAYMON):
- В секции Realm settings на вкладке Tokens уточнить алгоритм подписи токенов в поле Default Signature Algorithm (здесь - RS256):
- На вкладке Keys найти cертификат для данного алгоритма:
- Кнопка
в соответствующей строке открывает искомый сертификат:
Данные рекомендуется сохранить в файл keycloak_realm_certificate.
Backend-клиент
Клиенты - это параметры соединения с Keycloak-сервером для внешних приложений, которые авторизуют пользователей.
Главной особенностью Backend-клиента является наличие собственной аутентификации: такой клиент получает конфиденциальный доступ по секретному ключу.
Для настройки Backend-клиента необходимо:
- Выбрать требуемую область (Realm) из списка (здесь - SAYMON):
- В секции Clients нажать кнопку
: - Ввести имя Backend-клиента в поле Client ID:
и нажать кнопку . - Слайдер Client authentication установить в положение On:
и нажать кнопку . - B списке Action выбрать Download adapter config:
- Нажать кнопку , чтобы получить файл настроек соединения для Backend-клиента в формате JSON:
Конфигурация сервера Центрального Пульта
Для взаимодействия с сервером Keycloak на сервере Центрального Пульта необходимо:
Добавить раздел 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 достаточно указать один из параметров.
Перезапустить службу saymon-server:
sudo service saymon-server restart
Настройка web-интерфейса
Для возможности авторизации пользователей посредством Keycloak через web-интерфейс Центрального Пульта необходимо получить файл настроек соединения Frontend-клиента.
Настройка клиента и получение файла настроек соединения осуществляются в консоли администратора Keycloak.
Frontend-клиент
Главной особенностью Frontend-клиента является отсутствие собственной аутентификации: данный клиент получает публичный доступ.
Для настройки Frontend-клиента необходимо:
- Выбрать требуемую область (Realm) из списка (здесь - SAYMON):
- В секции Clients нажать кнопку
: - Ввести имя Frontend-клиента в поле Client ID:
и нажать кнопку . - Слайдер Client authentication установить в положение Off:
и нажать кнопку . - На вкладке Settings в разделе Access settings указать корректные URI-адреса, с которых будет осуществляться доступ к Keycloak-серверу, и на которые будут перенаправляться пользователи после успешной аутентификации и выхода:
и нажать кнопку . - B списке Action выбрать Download adapter config:
- Нажать кнопку , чтобы получить файл настроек соединения для Frontend-клиента в формате JSON:
Конфигурация web-интерфейса Центрального Пульта
Для активации формы авторизации через Keycloak в web-интерфейсе системы необходимо:
Добавить на сервере Центрального Пульта раздел authentication в конфигурационный файл клиента /usr/local/saymon/client/client-config.js:
authentication: { availableMethods: ['native', 'keycloak'], methodByDefault: 'keycloak', services: { keycloak: { configUri: 'keycloak_frontend.json' } } }
где:
- availableMethods - список доступных для пользователей методов аутентификации;
- methodByDefault - метод аутентификации, который будет предложен пользователю сразу при отображении аутентификационной формы;
configUri - файл настроек соединения, сгенерированный сервером Keycloak для Frontend-клиента.
Файл настроек соединения для Frontend-клиента необходимо поместить в каталог с конфигурационным файлом клиента /usr/local/saymon/client/client-config.js.
- Обновить страницу Центрального Пульта в web-браузере.