Keycloak — ПО для авторизации по стандарту OAuth2. Подробнее см. документацию Keycloak.
С помощью модуля интеграции вы можете организовать авторизацию ваших сотрудников через Keycloak.
OAuth2 — протокол авторизации, который позволяет одному сервису выдать права на доступ к ресурсам пользователя на другом сервисе. Работа с пользователями и все проверки выполняются сервером авторизации. Сервером авторизации может выступать стороннее приложение, например, Google, Госуслуги (ЕСИА) и пр. или сервер с установленным ПО Keycloak.
Настройка на стороне Keycloak
На стороне Keycloak необходимо:
- выполнить настройку пользователя интеграции (Client);
- создать роли (Client Role) для сопоставления с отделами в BILLmanager;
- назначить роли профилям сотрудников (user).
Чтобы настроить Keycloak для интеграции с BILLmanager:
- Авторизуйтесь в системе.
- Выберите нужное пространство в боковом меню.
Чтобы создать новое, нажмите Create realm.
- В боковом меню перейдите в раздел Clients:
- Создайте пользователя для интеграции с BILLmanager. Для этого нажмите кнопку Create client:
- на вкладке General settings:
- Client type — выберите OpenID Connect.
- Client ID — укажите идентификатор. Это значение потребуется указать в настройках BILLmanager в качестве ID приложения.
- Нажмите Next.
- на вкладке Capability config:
- Client autentification — активируйте опцию.
- Service accounts roles — активируйте опцию.
- Нажмите Next.
- на вкладке Login settings:
- на вкладке General settings:
- Перейдите в редактирование созданного пользователя интеграции. Для этого нажмите на Client ID в таблице:
- Создайте роли для сопоставления с отделами в BILLmanager: перейдите на вкладку Roles → нажмите Create role.
Создайте столько ролей, сколько отделов в вашем BILLmanager.
- Назначьте роли пользователю интеграции (client) в системе Keycloak: перейдите на вкладку Service accounts roles → кнопка Assign role → установите Filter by clients. Выберите:
- view-users;
- view-clients.
- Перейдите на вкладку Credentials → сохраните значение поля Client secret.
- Создайте роли для сопоставления с отделами в BILLmanager: перейдите на вкладку Roles → нажмите Create role.
- Создайте пользователя для интеграции с BILLmanager. Для этого нажмите кнопку Create client:
- В боковом меню перейдите в раздел User:
- Создайте профили сотрудников. Заполните поля:
- Username;
- Email — если почта не была указана в профиле на стороне Keycloak, её потребуется указать при попытке авторизации в BILLmanager.
- Назначьте роли сотрудникам:
- Создайте профили сотрудников. Заполните поля:
Настройка на стороне BILLmanager
Установка модуля
Чтобы установить модуль, перейдите в раздел Интеграция → Модули → Авторизация через Keycloak → кнопка Установить.
Настройка модуля
Чтобы открыть настройки, перейдите в раздел Интеграция → Модули → Авторизация через Keycloak → нажмите значок :
- Настройки интеграции:
- Keycloak API URL — укажите адрес REST API системы Keycloak.
- Realm — укажите название пространства в Keycloak.
- ID приложения — укажите Client ID в Keycloak.
- UUID приложения — укажите client UUID в Keycloak. Вы можете взять эти данные из адресной строки при редактировании client в Keycloak. Нужное значение расположено между "clients/" и "/settings".
- Защищённый ключ — укажите секретный ключ приложения (client secret) в Keycloak. Нужное значение находится в Keycloak в разделе Client → редактирование настроек клиента → вкладка Credentials.
- Список IP-адресов — укажите список IP-адресов, с которых нужно разрешить авторизацию через Keycloak.
Вы можете указать отдельные адреса — 123.45.67.89, адреса по маске — 123.45.67.0/24, либо диапазон адресов — 123.45.67.89-123.45.67.98.
Для сотрудников, у которых есть привязка к Keycloak, указанные адреса также будут использованы для ограничения доступа к платформе. - Частота выполнения синхронизации — укажите частоту запуска задания cron по синхронизации пользователей. Значение по умолчанию — 0 2 * * * (каждый день в два часа ночи). Если очистить поле, задание выполняться не будет.
- Настройки сопоставления отделов и Client Role:
- Нажмите кнопку Добавить.
- Отдел — выберите отдел в BILLmanager.
- Client Role — выберите роль в Keycloak.
- Нажмите кнопку Ок.
- Нажмите кнопку Ок, чтобы сохранить настройки.
- Чтобы загрузить данные в BILLmanager из Keycloack, нажмите Синхронизация пользователей.
Доступные действия с настройками сопоставления:
- Редактирование — вы можете изменить роль Keycloack, с которой сопоставлен отдел в BILLmanager.
- Удалить.
Включение авторизации
Чтобы включить в BILLmanager авторизацию через Keycloak, перейдите в раздел Провайдер → Провайдеры → выберите провайдера → кнопка Изменить → блок Способы регистрации и авторизации → активируйте опцию Keycloak.
После этого на форме авторизации в BILLmanager отобразится значок Keycloak.
Если в настройках модуля указаны разрешённые IP-адреса, значок авторизации через Keyloack будет отображен только при открытии страницы с разрешённого IP-адреса.
Логика работы
Keycloak отвечает только за авторизацию в системе. Управление правами и доступами пользователей остаются в BILLmanager. При редактировании данных пользователя в BILLmanager информация в Keycloak не выгружается.
Авторизация сотрудника в BILLmanager через Keycloak
Условия:
- учётная запись (user) сотрудника создана в Keycloak;
- учётная запись сотрудника сопоставлена с ролью в Keycloak (для user в Keycloack установлена роль).
Как работает:
- Сотрудник открывает страницу авторизации в BILLmanager.
- Если в настройках указаны разрешённые IP-адреса, BILLmanager проверяет IP-адрес пользователя. Если IP-адрес входит в список, открывается страница с возможностью авторизоваться через Keycloack.
- Сотрудник нажимает значок авторизации через Keycloak.
- Открывается страница авторизации в Keycloak, на которой сотрудник вводит свои логин и пароль в системе Keycloak.
- Keycloak проверяет учётные данные сотрудника.
- Если учётные данные сотрудника введены верно, то Keycloak перенаправляет сотрудника BILLmanager.
- BILLmanager проверяет наличие учётной записи сотрудника:
- если учётной записи сотрудника нет в BILLmanager, она будет выгружена из Keycloak. После чего сотрудник перенаправляется в BILLmanager.
- если учётная запись есть в BILLmanager, сотрудник перенаправляется в BILLmanager;
- если учётная запись сотрудника есть в BILLmanager и в Keycloak, но ранее сотрудник не заходил через Keycloak, то этот способ авторизации будет сохранён. Сотрудник перенаправляется в BILLmanager;
- если учётные данные сотрудника введены неверно, на странице авторизации Keycloak или BILLmanager будет отображено сообщение об ошибке.
Выгрузка новой учётной записи сотрудника в BILLmanager из Keycloak
Условия:
- учётная запись (user) сотрудника создана в Keycloak;
- учётная запись сотрудника сопоставлена с ролью в Keycloak (для user установлена clientRoles).
Как работает:
- BILLmanager запрашивает список пользователей из Keycloak. Данные выгружаются при запуске задания синхронизации, либо при попытке авторизации пользователя Keycloak, которого ещё нет в системе BILLmanager.
- BILLmanager отбирает новых пользователей.
- BILLmanager создаёт новых пользователей, используя информацию из Keycloak. Права доступа назначаются в соответствии с указанным в сопоставлении отделом.
Выгрузка изменений записей сотрудников в BILLmanager из Keycloak
Изменением записи сотрудника также считается включение и выключение пользователя в Keycloak.
Условия:
- учётная запись (user) сотрудника изменена в Keycloak;
- учётная запись сотрудника есть в BILLmanager;
- учётная запись сотрудника была выгружена из Keycloak в BILLmanager.
Как работает:
- BILLmanager запрашивает список пользователей из Keycloak.
- BILLmanager отбирает тех пользователей, в которых есть различия.
- BILLmanager изменяет данные о пользователях, используя информацию из Keycloak.
Дополнительно
Лог-файлы взаимодействия BILLmanager с модулем интеграции Keycloak записываются в файлы:
- /usr/local/mgr5/var/omkeycloak.log — запросы к Keycloak: получение токена авторизации, формирование ссылок для перехода в Keycloak, запрос ролей, запрос информации о пользователе;
- /usr/local/mgr5/var/billmgr.log — информация об ошибках.