Аутентификация через Keycloak и OpenID Connect. Настройка подключения и служб
Введение
Здесь представлены краткие инструкции по настройке аутентификации в Comindware Platform посредством Keycloak и OpenID Connect для ОС Linux.
Порядок настройки
-
Подготовьте следующие сведения, необходимые на последующих шагах настройки аутентификации через Keycloak:
<yourHost>
— адрес сервера из глобальной конфигурации Comindware Platform;<instanceName>.yml
— путь к файлу конфигурации экземпляра Comindware Platform (cм. «Пути и содержимое папок экземпляра ПО»);https://<myKeycloakHost>
— адрес сервера Keycloak;<myKeycloak>
— наглядное название службы Keycloak;<myKeycloakRealm>
— имя области (realm) Keycloak;<myKeycloakClientId>
— ID клиента Keycloak.
-
Проверьте использование протокола HTTPS для доступа к Comindware Platform.
- Настройте службу Keycloak.
- Настройте ОС Linux с экземпляром Comindware Platform.
- Инициализируйте Comindware Platform для входа через Keycloak.
- При необходимости настройте время жизни JWT-токенов в соответствии с правилами безопасности и бизнес-требованиями.
Проверка подключения сервера Comindware Platform по протоколу HTTPS
- Откройте страницу «Администрирование» — «Глобальная конфигурация».
-
Удостоверьтесь, что URL-адрес сервера начинается с
https://
.Проверка адреса сервера
Настройка Keycloak
- Откройте консоль администратора Keycloak.
-
В левом меню выберите область (realm) master или другую существующую область.
Переход к управлению областью master в Keycloak -
Если требуемая область (realm) отсутствует, нажмите кнопку Create realm (Создать область), введите имя области, например
<myKeycloakRealm>
, и нажмите кнопку Create (Создать).Создание области (realm) в Keycloak -
В левом меню выберите пункт Clients (Клиенты).
- Нажмите кнопку Create client (Создать клиент).
-
На шаге General settings:
- Выберите «Client type» (Тип клиента) OpenID Connect.
- Введите «Client ID» (ID клиента), например
<myKeycloakClient>
.
Создание нового клиента Keycloak -
Нажмите кнопку Next (Далее).
-
На шаге Capability config (Конфигурация функций) включите функции Client authentication (Аутентификация клиента) и Direct access grants (Прямое предоставление прав).
Настройка конфигурации функций клиента Keycloak -
Нажмите кнопку Next (Далее).
-
На шаге Login settings (Параметры входа) укажите:
- Root URL (Корневой URL), например
https://<yourHost>/
; - Home URL (URL начальной страницы), например
https://<yourHost>/
; - Valid redirect URIs (Допустимые URI переадресаций), например
https://<yourHost>/*
; - Web origins (Исходные URI), например
https://<yourHost>/
.
Настройка параметров входа для клиента Keycloak - Root URL (Корневой URL), например
-
Нажмите кнопку «Save» (Сохранить).
-
На отобразившейся странице:
- отключите функцию Front channel logout (Выход через фронтенд);
- введите Backchannel logout URL (URL выхода через бэкенд), например
https://<yourHost>/OpenIdLogoutChallenge
.
Настройка параметров выхода для клиента Keycloak -
Откройте вкладку Credentials (Учётные данные).
-
Сохраните Client Secret (Секрет клиента). Его потребуется указать в директиве
auth.openId.clientSecret
в файле конфигурации {{ productnName }}.Настройка учётных данных для клиента Keycloak -
В левом меню выберите пункт *Users (Пользователи).
- Создайте нового пользователя, нажав кнопку Create new user (Создать пользователя), или добавьте имеющегося пользователя, нажав кнопку Add user (Добавить пользователя).
-
Настройте свойства пользователя:
- Включите функцию Email verified (Адрес эл. почты подтверждён).
- Заполните поля Username (Логин), Email (Адрес эл. почты), First name (Имя), Last name (Фамилия).
- Нажмите кнопку Create (Создать) или Save (Сохранить).
Создание нового пользователя Keycloak -
На вкладке Credentials (Учётные данные) нажмите кнопку Set password (Установить пароль).
- Задайте временный пароль для пользователя.
- Включите функцию Temporary (Временный пароль).
- Нажмите кнопку Save (Сохранить).
Установка временного пароля для пользователя Keycloak
Настройка конфигурации Comindware Platform
-
В файле конфигурации экземпляра Comindware Platform (
<instanceName>.yml
) настройте директивы по следующему образцу:#### Настройки OpenID-аутентификации #####
# Имя сервиса OpenID, используемого для входа
auth.openId.displayName: <myKeycloak>
# Вкл./выкл. функции
auth.openId.enabled: true
# Адрес сервера OpenId Connect
auth.openId.server: https://<myKeycloakHost>
# Пространство имен или контекст,
# в котором происходит аутентификация пользователей.
# Используется для управления идентификацией
# и доступом в системе OpenID Connect
auth.openId.realm: <myKeycloakRealm>
# Уникальный идентификатор клиентского приложения,
# используемый для аутентификации и авторизации запросов
# в рамках протокола OpenID Connect
auth.openId.clientId: <myKeycloakClient>
# Секретный ключ OpenId Connect
# Это сохранённый ранее секрет клиента
auth.openId.clientSecret: <keyCloakClientSecret>
# Список идентификаторов целевой аудитории,
# для которой предназначены токены,
# используемые в процессе аутентификации и авторизации в OpenID Connect.
auth.openId.audience: myAudience
Настройка ОС Linux с Comindware Platform
-
Перейдите в режим суперпользователя
root
:sudo -s
или
su -
-
Добавьте в файл
/etc/hosts
строку:"xxx.xxx.xxx.xxx" "<yourHost>"
Здесь
xxx.xxx.xxx.xxx
— IP-адрес,<yourHost>
адрес сервера Comindware Platform, указанный в глобальной конфигурации Comindware Platform (без указания протоколаHTTP
илиHTTPS
). -
Сформируйте SSL-сертификат на сервере NGINX. Например, согласно инструкциям в статье «Генерация SSL сертификата для NGINX (openssl)».
-
Откройте для редактирования файл конфигурации NGINX:
vim /etc/nginx/sites-available/comindware<instanceName>
-
Настройте конфигурацию SSL-сертификата аналогично следующему примеру:
server {
listen 80 default;
listen 443 ssl;
root /var/www/<instanceName>;
server_name <yourHost>;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
client_max_body_size 300m;
fastcgi_read_timeout 10000;
location / {
proxy_read_timeout 10000;
proxy_connect_timeout 10000;
proxy_send_timeout 10000;
root /var/www/<instanceName>/;
fastcgi_pass unix:/var/www/<instanceName>/App_Data/comindware.socket;
include /etc/nginx/fastcgi.conf
}
}
-
Проверьте конфигурацию NGINX:
nginx -t
-
Перезапустите Comindware Platform:
systemctl restart elasticsearch nginx comindware<instanceName>
Инициализация Comindware Platform для входа через Keycloak
- Откройте веб-сайт экземпляра Comindware Platform, например https://
- Нажмите кнопку «Войти как администратор».
- Введите учётные данные администратора и нажмите кнопку «Войти».
- Выйдите из системы.
- Отобразится страница входа с кнопкой «Войти с помощью myKeycloak».
- На этом настройка входа через OpenID Connect завершена. Теперь пользователи смогут входить в Comindware Platform с использованием своих аккаунтов через Keycloak.
Настройка времени жизни сеансов посредством JWT-токенов для SSO
Настройка времени жизни сеансов (сроков действия токенов) имеет важное значение для управления безопасностью аутентификации и авторизации.
При использовании механизма JWT (JSON Web Tokens) можно настроить время жизни таких токенов, как токен доступа (access token) и токен обновления (refresh token).
Токен доступа
Токен доступа (access token) используется для доступа к защищённым ресурсам Comindware Platform и имеет перечисленные ниже особенности.
- Срок действия: от 5 минут до 1 часа.
- Обновление: автоматическое через токен обновления по окончании срока действия.
- Отзыв: при выходе пользователя из системы или изменении учётных данных.
- Безопасность: короткий срок действия минимизирует риски при компрометации токена.
Токен обновления
Токен обновления (refresh token) позволяет обновлять токен доступа без повторной аутентификации. Благодаря этому пользователь может оставаться аутентифицированным без повторного ввода учётных данных.
- Срок действия: от нескольких дней до нескольких месяцев.
- Хранение: например, в cookie типа HttpOnly. Может храниться в базе данных с указанием срока действия и статуса (активный/отозванный).
- Отзыв: при выходе пользователя из системы или изменении учётных данных.
- Безопасность: требует особого внимания и надёжного хранения из-за длительного срока действия.
Структура JWT-токена
JWT-токен содержит следующие поля для управления его временем жизни:
{
"sub": "user123", // Идентификатор пользователя
"iat": 1610000000, // Время создания токена
"exp": 1610003600 // Время истечения срока действия (1 час)
}
Рекомендации по оптимизации времени жизни сеансов
Чтобы сбалансировать удобство использования и безопасность системы, воспользуйтесь приведёнными ниже рекомендациями.
- Для высокозащищённых приложений:
- Установите время жизни токена доступа 5–15 минут.
- Установите время жизни токена обновления не более 24 часов.
- Включите обязательное подтверждение при обновлении токенов.
- Для стандартных приложений:
- Установите время жизни токена доступа 30—60 минут.
- Установите время жизни токена обновления 7—30 дней.
- Общие рекомендации:
- Настройте уведомления о скором завершении сеанса с возможностью его продления.
- Регулярно проверяйте и обновляйте настройки безопасности и времени жизни сеансов в зависимости от изменений в политике безопасности или требований бизнеса.
- Используйте механизмы отзыва токенов при выходе пользователей из системы, смене учётных данных и подозрительной активности.
- Настройте журналирование событий аутентификации.
- Обеспечьте безопасное хранение токенов обновления.
- Реализуйте механизмы уведомления пользователей о предстоящем истечении срока действия сеанса.
Эта статья была полезна 1 чел.