В этой статье:
Шаг 1. Сохранение технологической учётной записи для подключения к СУБД
Шаг 2. Настройка параметров для внешнего сервиса
Шаг 3. Настройка подключения к репозиторию
Шаг 4. Подготовка внешнего сервиса и открытие веб-приложения
При входе в репозиторий с использованием JWT-токена внешний сервис аутентификации должен сформировать JWT-токен с информацией о пользователе и выполнить перенаправление в платформу с указанием этого токена в URL. При выполнении открытия соединения с репозиторием будет происходить извлечение информации о пользователе из полученного JWT-токена.
Если учётная запись пользователя внешнего сервиса содержится в менеджере безопасности, то будет выполнено подключение к репозиторию и вход в навигатор объектов под этим пользователем.
Если учётная запись пользователя внешнего сервиса не содержится в менеджере безопасности, то будет создан временный пользователь и добавлен в группы из списка атрибута, указанного в JWT-токене. Если атрибут не задан, то временный пользователь добавляется во встроенную группу ПОЛЬЗОВАТЕЛИ.
Подключение к СУБД производится под технологической учётной записью.
Схема взаимодействия представлена в подразделе «Аутентификация в продукте».
Для подключения к репозиторию, необходимо выполнить описанные в данном шаге настройки для каждого репозитория. Повторите данный шаг на всех рабочих узлах кластера.
Для настройки подключения к репозиторию:
Запустите приложение PP.Util, расположенное в папке установки продукта «Форсайт. Аналитическая платформа», с помощью командной строки от имени администратора. Ниже приведены команды для настройки подключения к репозиторию. Вместо PP.Util используйте PP.Util_start.sh для выполнения команды в ОС Linux, PP.Util.exe для ОС Windows.
Примечание. В ОС Linux при сохранении зашифрованного пароля технологической учётной записи запрашивается единица лицензирования AnalyticsPlatform. Ознакомьтесь со способами указания системной переменной LSFORCEHOST или LSHOST перед выполнением PP.Util_start.sh.
если предполагается аутентификация на сервере базы данных под одной технологической учётной записью для всех пользователей внешнего сервиса, то в менеджере безопасности не обязательно добавлять всех внешних пользователей, но обязательно должен быть добавлен пользователь, учётные данные которого будут использоваться в качестве технологической учётной записи для подключения к СУБД. В этом случае данные единой технологической учётной записи должны быть сохранены с помощью команды:
PP.Util /save_creds /ALG gos <идентификатор репозитория> /DC <имя пользователя репозитория (технологической учётной записи)> <пароль пользователя>
Пример сохранения данных одной общей технологической учётной записи для всех пользователей внешнего сервиса:
PP.Util /save_creds /ALG gos REPOSITORY_ID /DC TECHNO_ACCOUNT TECHNO_PASSWORD
если предполагается аутентификация на сервере базы данных под разными технологическими учётными записями, соответствующими пользователю внешнего сервиса, то в менеджере безопасности не обязательно добавлять всех внешних пользователей, но обязательно должны быть добавлены пользователи, учётные данные которых будут использоваться в качестве соответствующих технологических учётных записей для подключения к СУБД. В этом случае данные каждой технологической учётной записи для соответствующих внешних пользователей должны быть сохранены с помощью команды:
PP.Util /save_creds /ALG gos <идентификатор репозитория> <имя пользователя репозитория (технологической учётной записи)> <пароль пользователя репозитория (технологической учётной записи)> <имя пользователя репозитория (внешнего сервиса)>
Пример сохранения данных различных технологических учётных записей:
PP.Util /save_creds /ALG gos REPOSITORY_ID TECHNO_NAME1 TECHNO_PASSWORD1 USER1
PP.Util /save_creds /ALG gos REPOSITORY_ID TECHNO_NAME2 TECHNO_PASSWORD2 USER2
PP.Util /save_creds /ALG gos REPOSITORY_ID TECHNO_NAME2 TECHNO_PASSWORD2 USER3
Пользователи TECHNO_NAME1, TECHNO_NAME2, учётные данные которых используются в качестве технологических, обязательно должны быть добавлены в менеджере безопасности. Пользователи внешнего сервиса USER1, USER2, USER3 могут быть добавлены в менеджере безопасности, а могут быть временными пользователями.
Примечание. Пользователь, используемый в качестве технологической учётной записи, должен обладать набором привилегий, который включает в себя привилегии соответствующих пользователей внешнего сервиса, для которых он сохранён.
При подключении к репозиторию происходит поиск сохранённой технологической учётной записи для подключения к СУБД:
Сначала выполняется поиск сохранённой технологической учётной записи, соответствующей пользователю внешнего сервиса;
Если такая учетная запись не найдена, то подключение к СУБД осуществляется под единой учётной записью, сохранённой по умолчанию с параметром /DC;
Если отсутствует единая учётная запись, сохранённая с параметром /DC, и учётная запись, соответствующая пользователю внешнего сервиса, то генерируется ошибка подключения.
После выполнения действий будет настроено подключение к репозиторию.
Для внешнего сервиса добавьте подраздел с наименованием сервиса в ветке реестра [HKLM\SOFTWARE\Foresight\Foresight Analytics Platform\10.0\PP\BIS\System\ExtService\<наименование сервиса>] или в соответствующем разделе файла settings.xml. Задайте следующие настройки:
Type. Тип внешнего сервиса. В качестве значения укажите - JWT;
AuthUrl. URL-адрес страницы аутентификации внешнего сервиса;
UserIdAttr. Наименование атрибута или путь до него в JWT-токене, который будет содержать уникальный идентификатор пользователя. Например, наименование атрибута «given_name» или путь «/path/to/given_name»;
UserNameAttr. Наименование атрибута или путь до него JWT-токене, который будет содержать отображаемое имя пользователя. Например, наименование атрибута «name» или путь «/path/to/name». Значение атрибута будет применяться только для временных пользователей;
UserRolesAttr. Наименование атрибута или путь до него в JWT-токене, который будет содержать список групп пользователей для временного добавления пользователя в полученные группы. Используется, если учётная запись пользователя не создана в менеджере безопасности, а требуемые группы пользователей созданы в нём. Например, наименование атрибута «groups» или путь «/path/to/groups». Если параметр UserRolesAttr не указан, то временный пользователь добавляется во встроенную группу ПОЛЬЗОВАТЕЛИ;
Важно. В списке групп пользователей не допускается указание встроенной группы АДМИНИСТРАТОРЫ. Если данная группа имеется в списке, то при подключении будет сгенерирована исключительная ситуация.
SignaturePublicKey. Открытый ключ, который будет использоваться для проверки подписи токена. Подпись формируется по алгоритму RS256. Ключ задаётся в формате PEM, закодированном в BASE64;
UPN. Наименование атрибута или путь до него в JWT-токене, который будет содержать имя пользователя в формате UPN. Например, наименование атрибута «upn» или путь «/path/to/upn»;
Email. Наименование атрибута или путь до него в JWT-токене, который будет содержать почту пользователя. Например, наименование атрибута «mail» или путь «/path/to/mail».
Для установки сессионных значений глобальных переменных после успешного подключения к репозиторию может быть создан подраздел с именем AdditionalAttributes в описании настроек внешнего сервиса. Наименование каждого дочернего элемента этого подраздела должно совпадать с наименованием атрибута в JWT-токене, значение которого будет установлено глобальной переменной. Дочерний элемент может содержать параметр IdVariable, в котором указывается идентификатор глобальной переменной репозитория. Если параметр IdVariable не указан, то будет осуществляться поиск глобальной переменной с идентификатором, равным наименованию атрибута в верхнем регистре.
Пример заполнения параметров представлен в разделе System для файла settings.xml.
Для настройки подключения к репозиторию используйте файл Metabases.xml, добавьте атрибут Authentication со значением «8» и заполните раздел ExtService с атрибутом Provider. В качестве значения атрибута укажите наименование подраздела, созданного для внешнего сервиса на шаге 2.
Пример файла Metabases.xml:
<PP>
<Metabases>
<REPOSITORY_JWT Name="REPOSITORY_JWT" Authentication="8" Driver="POSTGRES" Package="STANDARDSECURITYPACKAGE">
<ExtService Provider="JWT_PROVIDER"/>
</REPOSITORY_JWT>
</Metabases>
</PP>
Альтернативным способом настройки подключения к репозиторию является добавление аналогичных параметров в раздел реестра:
[HKEY_CURRENT_USER\SOFTWARE\Foresight\Foresight Analytics Platform\10.0\Metabases\<идентификатор репозитория>] - настройки конкретного репозитория для текущего пользователя, не зависимо от разрядности системы;
[HKEY_LOCAL_MACHINE\SOFTWARE\Foresight\Foresight Analytics Platform\10.0\Metabases\<идентификатор репозитория>] - настройки конкретного репозитория в случае, когда разрядность «Форсайт. Аналитическая платформа» совпадает с разрядностью операционной системы. Для всех пользователей.
После внесения всех изменений перезапустите BI-сервер.
Работа веб-приложения должна осуществляться по протоколу HTTPS. Внешний сервис после аутентификации пользователя должен осуществить переход на страницу веб-приложения по ссылке вида:
https://<адрес веб-приложения>/fp10.x/r/#/app/navigator?repo=<идентификатор репозитория>&jwt=<сформированный JWT-токен>
Доступен переход по ссылке на навигатор объектов или объект репозитория. Ссылка должна содержать параметр repo c указанием идентификатора репозитория, и параметр jwt с указанием JWT-токена, содержащего информацию о пользователе.
Веб-приложение сформирует запрос к BI-серверу на подключение к репозиторию с указанием полученного JWT-токена. BI-сервер выполнит проверку подписи токена, извлечёт информацию о пользователе, выполнит открытие соединения с репозиторием. После открытия соединения с репозиторием отобразится страница веб-приложения, на которую было произведено перенаправление пользователя.
См. также:
Аутентификация в продукте | Настройка аутентификации через внешние сервисы