Данное руководство является примером настройки интеграции между Polymatica Analytics и Avanpost FAM по протоколу OpenID Connect с чтением прав доступа Polymatica Analytics, настроенных в Avanpost FAM для пользователей.
В этом руководстве описывается пример настройки конкретной системы у конкретного заказчика. В зависимости от различных факторов, те или иные шаги по настройке могут отличаться. |
Перед выполнением настроек необходимо наличие:
Avanpost FAM позволяет дополнять учетную запись пользователя произвольными данными («Дополнительные атрибуты»). Например, через этот функционал работает функция автоматического назначения групп пользователям «Полиматики».
Для добавления нового атрибута или редактирования существующего необходимо открыть вкладку «Пользователи» и нажать ссылку «Редактор атрибутов».
Открытая таблица содержит все дополнительные атрибуты, существующие в системе Avanpost FAM.
Список дополнительных атрибутов, поддерживаемых «Полиматикой»:
Наименование | Описание | Ожидаемый тип значения |
---|---|---|
plm_user_groups | Список групп в Polymatica Analytics, в которые добавить пользователя после успешной аутентификации. | SCSV-строка (Semicolon Separated Values). Одна строчка, произвольное количество столбцов. Каждый столбец — название одной группы. Разделитель: ; (точка с запятой). Символ кавычек: ' (одинарная кавычка). Кодировка текста: UTF-8 |
Осуществить вход в систему с учетной записью с необходимыми правами.
Перейти на вкладку «Приложения».
Нажать кнопку «Добавить приложение». Откроется страница с 4 пунктами, первая вкладка «Основные настройки»:
Нажать «Далее». Откроется вкладка «Настройки интеграции»:
Система выхода из учетной записи через Logout URL на стороне Polymatica Analytics пока не поддерживается. См. реализацию стандарта OpenID Connect Back-Channel Logout. |
Нажать «Далее». Откроется следующая вкладка «Настройки аутентификации»:
Нажать «Далее». Откроется последняя вкладка «Завершение»:
Нажать «Далее». Приложение создано.
На вкладке «Приложения» выбрать только что созданное приложение. Перейти на вкладку «Настройки» и включить редактирование нажатием на кнопку с карандашом справа. Установить следующие параметры:
Нажать кнопку «Сохранить».
Перейти на вкладку «Scopes». На этой вкладке настроим добавление в токены данных по запрашиваемым утверждениям (clams). Нажимаем кнопку «+» и указываем:
Утверждения (claims) — это маппинг данных из атрибутов пользователя на данные в токене, согласно следующей таблице (наименования запоминаем/записываем, понадобятся позже на этапе настройки сервера Polymatica Analytics):
Наименование | Тип | Значение | Комментарий |
---|---|---|---|
plm_groups | Значение из атрибута | plm_user_groups | В токен будет добавлен элемент «plm_groups» со значением, взятым из атрибута «plm_user_groups» блока дополнительных атрибутов карточки пользователя |
Нажимаем кнопку «Сохранить». Новый scope добавлен.
Перейти на вкладку «Модель доступа».
Осуществить перенос ролей пользователей Polymatica Analytics в Avanpost FAM. Нажать кнопку «+» и указать:
В блоке «Права (scopes)» добавить 5 вариантов доступа:
Код | Описание |
---|---|
administrator | Администратор системы |
cube_creation | Создание мультисфер |
data_export | Экспорт данных |
Данные в графе «Код» должны соответствовать hardCode идентификаторам ролей на сервере Polymatica Analytics (для списка допустимых идентификаторов см. plm::server::MemberRolesCodes::serialize). Описание взято со страницы списка ролей Polymatica Analytics, но может быть абсолютно любым. Чтобы не создавать диссонанс в сознании оператора техподдержки, имеет смысл указывать одинаковое описание. |
Сохранить указанные права и перейти к процессу создания пользователей/групп (или назначению прав пользователей, если Avanpost FAM получает пользователей откуда-то извне. Например, из LDAP).
Осуществить переход на вкладку «Пользователи». Нажать кнопку «Добавить пользователя». Указать основные данные учетной записи (в местной терминологии «атрибуты»). Дополнительные атрибуты указывать не требуется — нет поддержки со стороны Polymatica Analytics. Повторить процесс столько раз, сколько необходимо.
Перейти на вкладку «Группы». Нажать кнопку «Добавить группу».
Открыть созданную группу и добавить пользователей, активировать для группы созданное ранее приложение.
Перейти на вкладку «Сервис» и нажать на ссылку «Настройка ролей и прав». Нажать на кнопку «Добавить».
Нажать «Сохранить» и открыть параметры только что созданной роли. Убедиться, что на вкладке «Объекты доступа и права» все правильно и добавить пользователей и группы в соответствующих вкладках.
По состоянию Avanpost FAM 1.2.0 имеется баг, из-за которого система некорректно определяет роли пользователя в случае, если он добавлен в группу, а роли выданы только группе. Avanpost FAM не возвращает в Polymatica Analytics роли и, соответственно, управление правами доступа через Avanpost FAM становится невозможным. Решение проблемы есть, но оно не является оптимальным — необходимо назначить роли напрямую каждому пользователю. |
Настроить провайдера OpenID Connect для Polymatica Analytics. Процесс не отличается от настройки произвольного провайдера, но есть ряд важных параметров:
Параметр | Значение | Применение | |
---|---|---|---|
plm.login.oauth2.avanpost_permissions_resource_id | user_permissions (который требовалось запомнить заранее) Значение должно соответствовать идентификатору объекта доступа, указанному ранее в настройках приложения в Avanpost FAM | Если не указать, то Polymatica Analytics не сможет правильно прочитать права доступа пользователя, а Avanpost FAM может возвращать права доступа произвольных приложений | |
plm.login.oauth2.providers[i].client_secret | Секрет созданного приложения. Требовалось запомнить заранее, на этапе создания приложения Avanpost FAM | Без секрета невозможно проверить подлинность запроса на получение токена доступа от Polymatica Analytics к Avanpost FAM | |
plm.login.oauth2.providers[i].scope | openid profile email permissions | Если не указать permissions, то Avanpost FAM не будет сообщать права доступа пользователя и, соответственно, их не удастся применить к учетной записи пользователя Polymatica Analytics | |
plm.login.oauth2.providers[i].flow | pkce | pkce — наиболее безопасный вариант аутентификации из общих | |
plm.login.oauth2.providers[i].claims.login | preferred_username | Если не указать, то Polymatica Analytics не сможет прочитать логин пользователя, а место хранения будет отличаться от стандартного | |
plm.login.oauth2.providers[i].claims.fullname | name | Если не указать, то Polymatica Analytics не сможет прочитать полное имя пользователя, а место хранения будет отличаться от стандартного | |
plm.login.oauth2.providers[i].claims.permissions | permissions | Если не указать, то Polymatica Analytics не сможет прочитать права доступа пользователя | |
plm.login.oauth2.providers[i].claims.groups | plm_groups (запоминали ранее на этапе добавления scope для приложения) | Если не указать, то Polymatica Analytics не сможет прочитать группы пользователей | |
plm.login.oauth2.providers[i].metadata.use_oidc_discovery | Avanpost FAM поддерживает OpenID Connect Discovery, поэтому данный параметр позволяет сэкономить время, предоставив настройку серверу | ||
plm.login.oauth2.providers[i].metadata.url | http://srv-dev-rrsys-avanpost | Этот URI используется в качестве базового для запроса метаданных провайдера по протоколу OIDC. Используется в паре с use_oidc_discovery | |
plm.login.oauth2.providers[i].metadata.skip_validation | Не рекомендуется использовать. Позволяет пропустить валидацию данных, например, в случае, если введенные данные не позволяют пройти валидацию | ||
plm.login.oauth2.providers[i].authorization_add_redirect_parameter | Без добавления параметра редиректа сервер Avanpost FAM передает ошибку | ||
plm.login.oauth2.avanpost.admin_group_name | Отвечает за назначение роли «Администратор» всем пользователям той группы, название которой прислал Avanpost в claims | ||
plm.login.oauth2.providers[i].token_add_client_secret | Без добавления этих параметров приводит к возникновению ошибки в браузере в процессе получения токена сервером от провайдера: Failed to get access token from OAuth2 provider. В консоли сервера Polymatica Analytics: ["invalid_client", "Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).", ""] | ||
plm.login.oauth2.providers[i].skip_token_permissions | Применяется для пропуска сброса и применения прав доступа из токенов OAuth2 после успешной аутентификации | ||
plm.login.oauth2.providers[i].skip_token_roles | Применяется для пропуска сброса и применения ролей из токенов OAuth2 после успешной аутентификации | ||
plm.login.oauth2.providers[i].skip_token_groups | Применяется для пропуска сброса и применения групп пользователей из токенов OAuth2 после успешной аутентификации
| ||
plm.login.oauth2.providers[i].use_groups_whitelist | Использовать белый список групп пользователей для разрешения авторизации в Polymatica Analytics | ||
plm.login.oauth2.providers[i].groups_whitelist[j] | Название группы пользователей | Добавляет группу пользователей в белый список групп пользователей, которым разрешена авторизация в Polymatica Analytics. Приращивать индекс j необходимо по правилу:
|