OpenMetabaseResult OpenMetabase(MbDef tDef, UserCreds tCreds, [OpenMetabaseArg tArg])
tDef. Описание репозитория, к которому осуществляется подключение.
tCreds. Учетные данные пользователя, под которым осуществляется подключение.
tArg. Параметры подключения.
Операция OpenMetabase осуществляет подключение к репозиторию и возвращает моникёр соединения с репозиторием.
Операция позволяет выполнить следующие действия:
подключиться к существующему репозиторию и получить доступ к его объектам;
создать новый репозиторий на сервере СУБД.
Подключение к репозиторию может осуществляться различными способами. Для подключения необходимо указать информацию о репозитории и параметры аутентификации пользователя. Для указания репозитория, к которому осуществляется подключение, доступны следующие варианты:
В поле tDef.id укажите идентификатор описания репозитория. При выполнении операции в реестре операционной системы сервера, на котором расположен BI-сервер, производится поиск указанного описания. Если описание найдено, то его настройки будут использованы для подключения к репозиторию.
В поле tDef.logonData укажите параметры модуля безопасности, необходимые для подключения к репозиторию (драйвер СУБД, используемый для подключения, наименование или IP-адрес сервера, идентификатор схемы/базы данных). При этом в качестве идентификатора описания в поле tDef.id должна быть указана пустая строка.
Для аутентификации пользователей доступны следующие способы (более подробное описание представлено ниже):
С прямым указанием учетных данных;
С аутентификацией доменного пользователя;
С использованием протокола OAuth;
С использованием цифровой подписи.
Параметры аутентификации указываются в поле tCreds.
Результатом выполнения операции будут:
моникёр соединения с репозиторием (поле id);
ключ сессии (поле sessKey);
идентификатор сессии (поле sessCookie);
версия репозитория (поле version).
Примечание. Параметры сессии хранятся в памяти BI-сервера или на сервере состояний, если в конфигурации определена группа настроек StateServer. Если группа настроек StateServer определена, но сам сервер состояний отключен, то идентификатор сессии сгенерирован не будет.
Полученный моникёр в дальнейшем будет использоваться в следующих случаях:
при выполнении различных операций для указания репозитория, в рамках которого осуществляется работа;
в поле id при формировании идентификатора объекта, с которым осуществляется работа;
при закрытии соединения с репозиторием с помощью операции CloseMetabase.
Ключ сессии sessKey может использоваться, например, при работе с протоколом доступа для получения списка операций, выполненных в рамках сессии.
Идентификатор sessCookie, в отличие от моникёра, не используется для работы с репозиторием, а используется только для идентификации существующих сессий на сервере. Если полученный идентификатор сохранить и в дальнейшем, при новом подключении, указать в качестве значения поля tArg.sessCookie, то на BI-сервере будет осуществлена проверка на наличие сессии с таким же идентификатором. Если сессия существует, то будет осуществлена проверка на возможность её повторного использования. Необходимыми условиями для повторного использования сессии являются:
корректные логин и пароль пользователя;
среди активных сессий ещё существует сессия с указанным идентификатором;
существующая сессия была создана именно для указанного пользователя.
Учетные данные задаются в полях tCreds.user и tCreds.pass.
Для подключения с использованием цифровой подписи необходимо предварительно подготовить репозиторий следующим образом:
В реестре необходимо сохранить зашифрованный пароль, который будет использоваться для подключения к базе данных репозитория. Для этого запустите утилиту PP.Util с ключом /save_creds <ID описания репозитория> <имя пользователя>. Утилита расположена в папке с установленным «Форсайт. Аналитическая платформа». После успешного запуска будет запрошен пароль для входа в репозиторий. Введите пароль. После этого будет выведено сообщение «Password for metabase “ID описания репозитория” and login “имя пользователя” saved».
Сохраните сертификат в репозиторий используя следующую команду: PP.Util.exe /save_cert "путь до сертификата" <ID описания репозитория> <имя пользователя>. После этого утилита запросит пароль указанного пользователя. Полученные учетные данные будут использованы для подключения к репозиторию. При удачной авторизации и сохранении сертификата будет выведено сообщение: Certificate from file "путь до сертификата" with identifier "ID сертификата" saved to metabase "ID описания репозитория".
Сохранить закрытый ключ в реестре используя следующую команду: PP.Util.exe /save_private_key "путь до ключа" <ID сертификата> <алгоритм шифрования := gos|pro, если не указан, то pro>. После удачного сохранения закрытого ключа будет выведено сообщение: "Certificate from file "путь до ключа" with identifier "ID сертификата" saved".
Примечание. Если BI-сервер развернут на базе веб-сервера IIS, то пул BI-сервера должен быть запущен из-под того пользователя, под которым запускали утилиту PP.Util.
Перед подключением необходимо выполнить операцию GetVerifierCode для получения блока данных, которые клиент должен будет подписать цифровой подписью. Подписанные данные необходимо указать в поле tCreds.verifier.signature, в поле tCreds.verifier.cookie необходимо указать случайное число, которое также будет получено в результате выполнения операции GetVerifierCode. В поле tCreds.verifier.user указывается пользователь, под которым осуществляется подключение. Этот пользователь может отсутствовать в СУБД репозитория и менеджере безопасности.
Примечание. Если указан пользователь, который отсутствует везде, то он будет создан в менеджере безопасности репозитория. Если было задано поле tCreds.verifier.role, то пользователь будет включен в указанную группу и будет обладать соответствующими правами. Если поле не задано, то пользователь будет включен во Встроенную группу пользователей. При необходимости права созданного пользователя можно изменить с помощью операции SetMbSec.
В поле tCreds.verifier.mbUser необходимо указать пользователя, под которым будет осуществляться фактическое подключение к базе данных репозитория. Данный пользователь должен существовать в СУБД и обладать правами на вход в репозиторий. Также в поле tCreds.verifier.certificate необходимо указать идентификатор сертификата, который будет использоваться для проверки цифровой подписи. Данный сертификат должен быть сохранен в репозитории таким образом, как это было описано выше. В поле tCreds.pass задается пустая строка, данное поле не используется при подключении с использованием цифровой подписи.
Для использования интегрированной доменной аутентификации пользователя поле tCreds.user не указывается, а в поле tCreds.pass необходимо указать пустое значение. При этом для подключения будут переданы учетные данные текущего пользователя операционной системы.
В репозитории может быть установлен обработчик пользовательских событий, который будет обрабатывать действия, выполняемые из веб-сервиса. Для этого необходимо задать следующие настройки:
Свойству IMetabaseDefinition.CheckCustomEvents установить значение True.
Для репозитория установить специальный объект MetabaseSpecialObject.MetabaseCustomEvents, в качестве объекта указывается модуль, содержащий реализацию интерфейса IMetabaseCustomEvents.
При выполнении операции OpenMetabase будет выполнен следующий алгоритм:
Если IMetabaseDefinition.CheckCustomEvents = False, то открывается соединение в соответствии с переданными учётными данными и возвращается моникёр соединения.
Если IMetabaseDefinition.CheckCustomEvents = True, то открывается соединение с учётными данными, которые должны быть сохранены утилитой PP.Util. Если сохранённые учётные данные отсутствуют, то генерируется исключительная ситуация.
Запускается на выполнение специальный объект, который должен быть задан в репозитории. Если он не задан или в нём отсутствует реализация интерфейса IMetabaseCustomEvents, то генерируется исключительная ситуация.
В событие OnBeforeLogon передаются учётные данные, которые были переданы в операцию OpenMetabase. Далее, в соответствии с прикладной логикой, в обработчике события можно произвести какие-либо действия. Результирующее соединение должно быть задано в свойстве ResultMetabase аргумента события, моникёр этого соединения будет возвращён в результате операции. Если по каким-либо причинам в обработчике события свойству AllowLogon аргумента события было установлено значение False, то в результате операции будет сгенерирована исключительная ситуация.
Различные варианты использования операции приведены в следующих примерах:
См. также: