В этой статье:
Шаг 1. Настройка подключения к репозиторию
Для авторизации пользователей при подключении к репозиторию в веб-приложении доступно использование протоколов OAuth версии 1.1 и OAuth версии 2.0.
Протокол OAuth 1.1 позволяет авторизоваться под учётной записью сервиса Twitter, протокол OAuth 2.0 - под учётными записями других сервисов, поддерживающих данный протокол, например, Google.
Для настройки входа в систему с одновременным использованием протоколов OAuth 1.1 и OAuth 2.0 выполните шаги, указанные ниже.
Для подключения к репозиторию под конкретным пользователем, который проходил авторизацию на внешнем сервере, необходимо выполнить описанные в данном шаге настройки для каждого пользователя и для каждого репозитория. При этом в качестве имени пользователя указывается логин, используемый этим пользователем на внешнем сервере. Данный шаг повторите на всех рабочих узлах кластера.
Для настройки подключения к репозиторию:
Добавьте в реестр параметр Alg:
В ОС Windows запустите редактор реестра с помощью файла regedit.exe, расположенного по пути C:\Windows:
1.2. Перейдите в раздел HKEY_CURRENT_USER\SOFTWARE\Foresight\Foresight Analytics Platform\9.0\Debug\Crypt, в котором хранится закрытый ключ сертификата безопасности.
1.3. Создайте строковый параметр Alg:
В контекстном меню раздела выполните команду «Создать > Строковый параметр».
Параметр будет создан, его наименование будет переведено в режим редактирования. Введите наименование Alg и нажмите клавишу ENTER.
Примечание. Если параметр Alg уже существует, то пропустите данный шаг.
1.4. Установите значение «GOST» для параметра Alg:
Дважды щелкните основной кнопкой мыши по параметру Alg или выполните команду «Изменить» в контекстном меню параметра.
В открывшемся окне «Изменение строкового параметра» в поле «Значение» введите значение «GOST».
Нажмите кнопку «OK».
В ОС Linux откройте файл registry.reg, в котором хранятся настройки реестра, и выберите один из способов:
вручную добавьте параметр Alg со значением «GOST» в разделе реестра HKEY_CURRENT_USER\SOFTWARE\Foresight\Foresight Analytics Platform\9.0\Debug\Crypt;
экспортируйте раздел реестра ОС Windows с добавленным параметром Alg в файл и импортируйте его в ОС Linux.
Для получения подробной информации о настройках реестра в ОС Linux обратитесь к разделу «Конфигурация и настройка».
Запустите утилиту PP.Util, расположенную в папке с установленным продуктом «Форсайт. Аналитическая платформа», с помощью командной строки от имени администратора.
2.1. Убедитесь, что для пула веб-приложения задана учётная запись операционной системы.
2.2. Сохраните зашифрованный пароль для входа в репозиторий:
PP.Util /save_creds "идентификатор репозитория" /dc "имя пользователя репозитория"
После выполнения действия будет запрошен пароль для подключения к репозиторию. Введите пароль, после чего будет выведено сообщение «Password for metabase 'идентификатор репозитория' and login 'имя пользователя' saved».
2.3. Для настройки подключения к репозиторию понадобятся закрытый ключ и сертификат, представляющие собой личную цифровую подпись пользователя. Закрытый ключ и сертификат генерируются в формате PEM при помощи специальных программных средств, например, OpenSSL. Выполните предварительные настройки OpenSSL:
Для ОС Windows используйте последнюю версию OpenSSL. Распакуйте или установите OpenSSL.
Для ОС Linux используйте версию OpenSSL для ОС Linux.
Для установки OpenSSL в Ubuntu/Debian/Astra Linux выполните команду:
sudo apt-get install openssl
Для установки OpenSSL в Ubuntu/Debian/Astra Linux выполните команду:
sudo yum install openssl
2.4. Создайте файл openssl.cnf, содержащий вспомогательную информацию. Конфигурация файла одинакова для ОС Windows и ОС Linux:
[ 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
[ client ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment,
dataEncipherment
extendedKeyUsage = clientAuth
nsCertType = client
crlDistributionPoints = @crl
[ crl ]
URI=http://testca.local/ca.crl
2.5. Выполните команду для создания корневого сертификата (команда может быть использована как в ОС Windows, так и в ОС Linux):
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».
2.6. Выполните команду для генерации ключа для серверного сертификата (команда может быть использована как в ОС Windows, так и в ОС Linux):
openssl genrsa -out server.key 2048
Создайте запрос на подпись серверного сертификата (команда может быть использована как в ОС Windows, так и в ОС Linux):
openssl req -config ./openssl.cnf -new -key server.key -out server.req
Выполните команду для выпуска серверного сертификата сроком действия 1 год (команда может быть использована как в ОС Windows, так и в ОС Linux):
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. Наименования сертификата и ключа могут быть любыми, например, client.cer и client.key.
2.7. Сохраните сгенерированный сертификат с расширением *.cer в репозиторий:
PP.Util /save_cert "путь до сертификата" <идентификатор репозитория> <имя пользователя>
После выполнения действия будет запрошен пароль указанного пользователя. Полученные учетные данные будут использоваться для подключения к репозиторию. При удачной авторизации и сохранении сертификата будет выведено сообщение «Certificate from file 'путь до сертификата' with identifier 'идентификатор сертификата' saved to metabase 'идентификатор репозитория'».
2.8. Сохраните сгенерированный закрытый ключ c расширением *.key в реестре:
PP.Util /save_private_key "путь до файла ключа" <идентификатор сертификата> <алгоритм
шифрования := gos|pro, если не указан, то pro>
Идентификатор сертификата, необходимый для выполнения команды, указан в выводе предыдущей команды.
После выполнения действия будет выведено сообщение «Certificate from file 'путь до ключа' with identifier 'идентификатор сертификата' saved».
После выполнения действий будет настроено подключение к репозиторию.
Для протоколов OAuth в редакторе реестра ОС Windows или в файле registry.reg в ОС Linux добавьте подразделы с именами OAuth-серверов и задайте соответствующие настройки реестра в разделе реестра HKLM\SOFTWARE\Foresight\Foresight Analytics Platform\9.0\PP\BIS\System\OAuth, или сформируйте раздел System в файле settings.xml:
параметры для OAuth 1.1:
PPUserNameFormat. Формат имен пользователей, например, «oa-tw-%s»;
ConsumerKey. Ключ зарегистрированного приложения;
ConsumerSecret. Секретный код зарегистрированного приложения;
параметры для OAuth 2.0:
PPUserNameFormat. Формат имен пользователей, например, «oa-ggl-%s»;
ConsumerKey. Ключ зарегистрированного приложения;
ConsumerSecret. Секретный код зарегистрированного приложения;
AuthUrl. Адрес сервиса авторизации, который будет использоваться в веб-приложении для параметра RequestTokenUrl;
RequestTokenUrl. Адрес сервиса авторизации, по которому будет возвращаться токен доступа;
RequestCallbackParam. Наименование атрибута, через который будет передаваться адрес для переадресации пользователя после авторизации в веб-приложении, например, «redirect_uri»;
UserDataUrl. Адрес сервиса данных, по которому будут возвращаться данные о пользователе после авторизации в веб-приложении;
UserIdAttr. Путь до поля в запрашиваемых данных, которое будет использоваться в качестве уникального идентификатора пользователя, например, «/path/to/id»;
UserNameAttr. Путь до поля в запрашиваемых данных, которое будет использоваться в качестве отображаемого имени пользователя, например, «/path/to/displayName».
При настройке подключения к репозиторию под конкретным пользователем, который проходил авторизацию на внешнем сервере, значения в параметрах UserIdAttr и UserNameAttr могут совпадать.
Значения, указываемые в параметрах ConsumerKey и ConsumerSecret, могут будут получены после регистрации разрабатываемого приложения на необходимом OAuth-сервере. Данные параметры необходимы, чтобы после авторизации на OAuth-сервере BI-сервер смог проверить и авторизовать соответствующего пользователя в репозитории.
Если параметры ConsumerKey и ConsumerSecret не указаны, то используются внутренние настройки BI-сервера, при этом на OAuth-сервере должно быть зарегистрировано приложение на базе веб-приложения «Форсайт. Аналитическая платформа».
После выполнения действий будут заданы параметры для протоколов OAuth.
Примечание. Для конструктора бизнес-приложений можно настроить автоматическую переадресацию на авторизацию пользователей через протокол OAuth 2.0 при входе в веб-приложение. Для этого в файле DBA.config.json задайте значение «OAuth2» в поле authentication и укажите сервис авторизации, заданный при настройке параметров для протоколов OAuth, в поле autoStartOauthProvider.
Для подготовки BI-сервера проверьте наличие интернета на сервере, где установлен BI-сервер, и убедитесь, что доступ к сайтам сервисов открыт.
Если интернет-соединение осуществляется через прокси-сервер, то создайте системные переменные CURLOPT_PROXY и CURLOPT_PROXYUSERPWD:
В ОС Windows откройте дополнительные параметры системы с помощью контекстного меню компьютера «Свойства > Дополнительные параметры системы»:
На вкладке «Дополнительно» диалогового окна «Свойства системы» нажмите кнопку «Переменные среды».
В разделе «Системные переменные» диалогового окна «Переменные среды» нажмите кнопку «Создать»:
CURLOPT_PROXY. Задайте переменной значение «proxy.sever.ru:8080», в котором содержится адрес прокси-сервера и порт, через который осуществляется подключение;
CURLOPT_PROXYUSERPWD. Задайте переменной значение «login:password», в котором содержится имя пользователя и пароль для подключения к интернету.
В ОС Linux добавьте переменные окружения в файл envvars, расположенный по пути /etc/opt/Foresight/fp9.2-biserver. В файле содержатся переменные окружения, которые считываются при старте BI-сервера с экземпляром Apache2.
Добавьте переменные:
CURLOPT_PROXY. Задайте переменной значение «proxy.sever.ru:8080», в котором содержится адрес прокси-сервера и порт, через который осуществляется подключение;
CURLOPT_PROXYUSERPWD. Задайте переменной значение «login:password», в котором содержится имя пользователя и пароль для подключения к интернету.
Переменные добавляются в файл в формате:
export <имя переменной>=<значение>
Для получения подробной информации о добавлении переменных окружения ОС Linux обратитесь к разделу «Конфигурация и настройка».
После выполнения действий будет подготовлен BI-сервер.
При настройке и отладке работы веб-приложения могут возникать различные ошибки. Для отслеживания выполняемых действий и получения отладочной информации включите логирование. Для этого в файле /etc/opt/Foresight/fp9.2-biserver/envvars добавьте переменные окружения PP_LOG и CURLOPT_VERBOSE. Более подробно читайте в статье «Конфигурация и настройка».
Для подготовки веб-приложения:
В файле PP.xml задайте значение «OAuth» для атрибута authentication в разделе <metabase> и значение true для атрибута enabled в разделе <oAuthService>. Для атрибута use_default_user_oauth укажите значение true, если подключение к репозиторию будет выполняться под пользователем по умолчанию, или значение false для подключения к репозиторию под конкретным пользователем, который проходил авторизацию на внешнем сервере:
<pp>
…
<metabase authentication="OAuth" id="идентификатор репозитория"/>
<oAuthService enabled="true" use_default_user_oauth="true"/>
…
</pp>
После выполнения действий на странице login.html будут доступны кнопки авторизации для входа в систему с использованием протоколов OAuth:
Выберите репозиторий и нажмите кнопку одного из сервисов авторизации без ввода имени пользователя и пароля. После чего будет осуществлен переход на страницу учетной записи соответствующего сервиса, например, Twitter или Google. Введите имя пользователя и пароль на странице сервиса и нажмите кнопку «Авторизоваться». При успешной авторизации будет открыта стартовая страница веб-приложения.
См. также: