В этой статье:
Шаг 1. Настройка подключения к репозиторию
Для авторизации пользователей при подключении к репозиторию в веб-приложении доступно использование протокола OAuth 2.0 или OpenID. Аутентификация пользователя производится под учётной записью сервисов, поддерживающих данный протокол, например, Keycloak.
Для настройки входа в систему выполните шаги, указанные ниже.
Для подключения к репозиторию под конкретным пользователем, который проходил авторизацию на внешнем сервере, необходимо выполнить описанные в данном шаге настройки для каждого пользователя и для каждого репозитория. При этом в качестве имени пользователя указывается логин, используемый этим пользователем на внешнем сервере. Повторите данный шаг на всех рабочих узлах кластера, кроме пункта 5.
Для настройки подключения к репозиторию:
Запустите приложение PP.Util, расположенное в папке установки продукта «Форсайт. Аналитическая платформа», с помощью командной строки от имени администратора. Ниже приведены команды для настройки подключения к репозиторию. Вместо PP.Util используйте PP.Util_start.sh для выполнения команды в ОС Linux, PP.Util.exe для ОС Windows.
если предполагается аутентификация на сервере базы данных под пользователем по умолчанию, то используйте команду:
PP.Util /save_creds /ALG gos "идентификатор репозитория" /dc "имя пользователя репозитория"
если предполагается аутентификация на сервере базы данных под пользователем, соответствующим пользователю, который проходил авторизацию на внешнем сервере, то используйте команду:
PP.Util /save_creds /ALG gos "идентификатор репозитория" "имя пользователя репозитория"
После выполнения действия будет запрошен пароль для подключения к репозиторию. Введите пароль, после чего будет выведено сообщение «Password for metabase 'идентификатор репозитория' and login 'имя пользователя' saved».
Для настройки подключения к репозиторию понадобятся закрытый ключ и сертификат, представляющие собой цифровую подпись BI-сервера. Закрытый ключ и сертификат генерируются в формате PEM при помощи специальных программных средств, например, OpenSSL. Распакуйте или установите OpenSSL.
Для установки OpenSSL в ОС Linux выполните команду:
для Debian-подобных дистрибутивов:
sudo apt-get install
для RedHat-подобных дистрибутивов и ALT Linux:
sudo yum install openssl
Сертификат генерируется и сохраняется в базу данных репозитория, а ключ для данного сертификата хранится на рабочем узле кластера.
Создайте файл openssl.cnf, содержащий вспомогательную информацию:
[ req ]
default_md = sha1
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = Country
countryName_default = RU
countryName_min = 2
countryName_max = 2
localityName = Locality
localityName_default = Russia
organizationName = Organization
organizationName_default = Foresight
commonName = Common Name
commonName_max = 64
[ certauth ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true
crlDistributionPoints = @crl
[ server ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
nsCertType = server
crlDistributionPoints = @crl
[ crl ]
URI=http://testca.local/ca.crl
Создайте корневой сертификат с помощью команды:
openssl req -config ./openssl.cnf -newkey rsa:2048 -nodes -keyform PEM -keyout ca.key -x509 -days 3650 -extensions certauth -outform PEM -out ca.cer
При выполнении команды будут запрошены дополнительные данные: PEM пароль и пользовательские данные о владельце сертификата. При запросе «Common name» укажите название выпускаемого удостоверяющего центра, например, «Test CA».
Сгенерируйте ключ для серверного сертификата с помощью команды:
openssl genrsa -out server.key 2048
Создайте запрос на подпись серверного сертификата:
openssl req -config ./openssl.cnf -new -key server.key -out server.req
Выпустите серверный сертификат сроком действия 1 год:
openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extfile openssl.cnf -extensions server -days 365 -outform PEM -out server.cer
Если требуется изменить срок действия сертификата, исправьте параметр -days перед выпуском сертификата.
Сертификат будет сгенерирован в файл с расширением *.cer, закрытый ключ будет сгенерирован в файл c расширением *.key. Наименования сертификата и ключа могут быть любыми, например, server_name.cer и server_name.key.
Примечание. Наименования сертификатов и ключей должны быть уникальными для каждого рабочего узла кластера.
Сохраните сгенерированный сертификат с расширением *.cer в репозиторий:
PP.Util /save_cert "путь до сертификата" <идентификатор репозитория> <имя пользователя>
После выполнения действия будет запрошен пароль указанного пользователя. Полученные учетные данные будут использоваться для подключения к репозиторию. При удачной авторизации и сохранении сертификата будет выведено сообщение «Certificate from file 'путь до сертификата' with identifier 'идентификатор сертификата' saved to metabase 'идентификатор репозитория'».
Сохраните сгенерированный закрытый ключ c расширением *.key в реестре:
PP.Util /save_private_key "путь до файла ключа" <идентификатор сертификата> <алгоритм
шифрования := gos|pro, если не указан, то pro>
Идентификатор сертификата, необходимый для выполнения команды, указан в выводе предыдущей команды.
После выполнения действия будет выведено сообщение «Certificate from file 'путь до ключа' with identifier 'идентификатор сертификата' saved».
После выполнения действий будет настроено подключение к репозиторию.
Для протокола OAuth или OpenID в редакторе реестра ОС Windows или в файле registry.reg в ОС Linux добавьте подразделы с наименованиями сервисов и задайте соответствующие настройки реестра в разделе [HKLM\SOFTWARE\Foresight\Foresight Analytics Platform\10.0\PP\BIS\System\OAuth\<наименование сервиса>], или сформируйте раздел System в файле Settings.xml со следующими параметрами:
AuthUrl. Адрес сервиса авторизации, который будет использоваться в веб-приложении для параметра RequestTokenUrl, с содержанием дополнительных URL-параметров. Для протокола OpenID в параметре scope указываются значения «profile+openid»;
ConsumerKey. Ключ зарегистрированного приложения;
ConsumerSecret. Секретный код зарегистрированного приложения;
Icon. Пиктограмма, которая будет отображаться на кнопке авторизации с помощью OAuth/OpenID-сервера. Если параметр не задан, то пиктограмма будет загружена из ресурсов «Форсайт. Аналитическая платформа». В качестве значения параметра указывается строка, содержащая изображение в формате base64;
PPUserNameFormat. Формат имен пользователей, например, «oa-ggl-%s»;
RequestCallbackParam. Наименование атрибута, через который будет передаваться адрес для переадресации пользователя после авторизации в веб-приложении, например, «redirect_uri»;
RequestTokenUrl. Адрес сервиса авторизации, по которому будет возвращаться токен доступа;
UserDataUrl. Адрес сервиса данных, по которому будут возвращаться данные о пользователе после авторизации в веб-приложении. Для протокола OpenID должен быть указан сервис расшифровки токена, из которого будут извлечены данные о пользователе;
UserIdAttr. Путь до поля в запрашиваемых данных, которое будет использоваться в качестве уникального идентификатора пользователя, например, «/path/to/id»;
UserNameAttr. Путь до поля в запрашиваемых данных, которое будет использоваться в качестве отображаемого имени пользователя, например, «/path/to/displayName».
При настройке подключения к репозиторию под конкретным пользователем, который проходил авторизацию на внешнем сервере, значения в параметрах UserIdAttr и UserNameAttr могут совпадать.
Значения, указываемые в параметрах ConsumerKey и ConsumerSecret, будут получены после регистрации разрабатываемого приложения на необходимом OAuth/OpenID-сервере. Данные параметры необходимы, чтобы после авторизации на OAuth/OpenID-сервере BI-сервер смог проверить и авторизовать соответствующего пользователя в репозитории.
Если параметры ConsumerKey и ConsumerSecret не указаны, то используются внутренние настройки BI-сервера, при этом на OAuth/OpenID-сервере должно быть зарегистрировано приложение на базе веб-приложения «Форсайт. Аналитическая платформа».
Пример заполнения параметров представлен в разделе System для файла Settings.xml.
Примечание. Для конструктора бизнес-приложений можно настроить автоматическую переадресацию на авторизацию пользователей через протокол OAuth/OpenID при входе в веб-приложение. Для этого в файле DBA.config.json задайте значение «OAuth» в поле authentication и укажите сервисы авторизации, заданные при настройке параметров для протокола OAuth или OpenID, в поле allowOauthProviders.
Для подготовки BI-сервера проверьте наличие интернета на сервере, где установлен BI-сервер, и убедитесь, что доступ к сайтам сервисов открыт.
Если интернет-соединение осуществляется через прокси-сервер, то создайте системные переменные:
CURLOPT_PROXY. Задайте переменной значение «proxy.sever.ru:8080», в котором содержится адрес прокси-сервера и порт, через который осуществляется подключение;
CURLOPT_PROXYUSERPWD. Задайте переменной значение «login:password», в котором содержится имя пользователя и пароль для подключения к интернету.
В ОС Linux переменные окружения содержатся в файле /etc/opt/Foresight/fp10.x-biserver/envvars и добавляются в формате: <имя переменной>=<значение>.
Переменные окружения считываются при старте BI-сервера с экземпляром Apache2. Для получения подробной информации о добавлении переменных окружения в ОС Linux обратитесь к разделу «Конфигурация и настройка».
После выполнения действий будет подготовлен BI-сервер.
Примечание. При необходимости для отслеживания выполняемых действий и получения отладочной информации создайте переменные окружения PP_LOG и CURLOPT_VERBOSE со значением «1».
Для подготовки веб-приложения используйте файл Metabases.xml добавьте атрибут Authentication со значением «7» и заполните атрибут OAuthService с параметрами:
Providers. Массив наименований сервисов авторизации, учётные записи которых можно использовать для входа в веб-приложение. Допустимые значения определяются тем, какие сервисы заданы при настройке параметров для протокола OAuth/OpenID, и указываются через точку с запятой. Обязательный параметр;
AutoStartProvider. Порядковый номер сервиса авторизации, указанного в массиве параметра Providers. На выбранный сервис будет выполняться автоматическая переадресация при попытке входа в веб-приложение с использованием протокола OAuth/OpenID. Необязательный параметр.
Если в качестве значения параметра используется сервис, который не содержится в параметре Providers, то автоматическая переадресация выполняться не будет;
UseDefaultUser. Признак, который определяет, под каким пользователем происходит подключение к репозиторию при авторизации через протокол OAuth/OpenID:
true. По умолчанию. Подключение к репозиторию выполняется под пользователем по умолчанию, учётные данные которого были сохранены с помощью утилиты PP.Util;
false. Подключение к репозиторию выполняется под конкретным пользователем, авторизовавшемся на внешнем сервере. Если используется данное значение, то учётные данные каждого пользователя для каждого репозитория должны быть сохранены с помощью утилиты PP.Util.
Необязательный параметр.
Пример файла Metabases.xml:
<PP>
<Metabases>
<REPOSITORY_ID Name="REPOSITORY_ID" Authentication="7" Package="STANDARDSECURITYPACKAGE" DebugMode="1">
<OAuthService AutoStartProvider="1" Providers="Google; Keycloak" UseDefaultUser="true"/>
<LogonData DATABASE="DATABASE_NAME" SERVER="SERVER_DATABASE"/>
</REPOSITORY_ID>
</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-сервер и откройте веб-приложение. В окне регистрации будут доступны кнопки авторизации для входа в систему с использованием протокола OAuth или OpenID:
Выберите репозиторий и нажмите кнопку одного из сервисов авторизации. После чего будет осуществлен переход на страницу учётной записи соответствующего сервиса, например, Keycloak. Введите имя пользователя и пароль на странице сервиса. При успешной авторизации в веб-приложении будет открыт навигатор объектов.
См. также: