Веб-сервис
Внешняя система предназначена для подключения к системе внешних веб-сервисов.
Основные настройки
Чтобы приступить к настройке внешней системы, на вкладке Коннектор выберите тип Веб-сервисы. После выбора типа коннектора станут доступны поля для ввода характеристик внешней системы:
Внешняя система может работать по следующим протоколам передачи данных:
REST (выбран по умолчанию)
SOAP
Данные могут передаваться в следующих форматах:
JSON (выбран по умолчанию)
XML
Флажок Использовать https в разделе Параметры сервиса Platform устанавливается при использовании защищенного протокола передачи данных.
Для работы внешней системы должен быть выбран способ получения или передачи сообщений в Platform и из Platform.
Внешняя система может работать в качестве веб-сервера и / или веб-клиента.
Веб-сервер
При установке флажка Внешний сервис вызывает методы Platform и указания порта сервера, Платформа публикует собственный веб-сервис для каждого направления.
В Платформу: http://server-address:port-number/sendMessage
Из Платформы: http://server-address:port-number/receive
Настройка аутентификации веб-сервера
Для аутентификации в системе используются учетные данные внутренних пользователей, созданных в сервисе Управление пользователями. При этом привязка внутренних пользователей к конкретным внешним системам отсутствует, аутентификация возможна при использовании учетных данных любого внутреннего пользователя. Настройка параметров аутентификации производится в режиме редактирования конфигурации.
Важно
Для включения аутентификации в системе добавьте следующую конфигурацию:
"auth": { "$type": "DT.ClusterConfiguration.AuthenticationConfig, DT_Core", "enabled": true, "usePasswordHash": false },
В поле auth должно быть установлено значение enabled: true.
Пример части конфигурации внешней системы с настройками для включения аутентификации в системе:
{ "$type": "DT.ClusterConfiguration.DtSystem, DT_Core", "config": { "authTypeRest": "Bearer", "auth": { "$type": "DT.ClusterConfiguration.AuthenticationConfig, DT_Core", "enabled": true, "usePasswordHash": false } } }
В поле config должно присутствовать поле authTypeRest , в значении которого указывается тип аутентификации:
Basic: базовый тип аутентификации.
Bearer: аутентификация с использованием токена на предъявителя Bearer (используется по умолчанию).
При значении usePasswordHash: true для аутентификации требуется передавать не сам пароль, а только хеш от него (SHA256 в шестнадцатеричном формате).
Веб-клиент
При установке флажка Platform вызывает методы Внешнего сервиса будет запущен веб-клиент, выполняющий http-запросы к сервису подключаемой системы. Параметр Базовый URL сервиса подключаемой системы является обязательным, адрес может быть в формате http://host/ или http://host:port/ (также возможно использование протокола https).
При необходимости установите значение таймаута для вызова методов в поле Таймаут вызова, если это значение не указано в обработчике.
Настройка аутентификации веб-клиента
Для веб-клиента можно настроить работу с внешним веб-сервисом, принимающим запросы аутентификации.
Выберите один из следующих способов аутентификации:
Anonymous: анонимный тип аутентификации, не требующий настройки дополнительных параметров.
Basic: базовый тип аутентификации, потребуется ввести логин и пароль в соответствующих полях.
Bearer: аутентификация с использованием токена на предъявителя Bearer, потребуется указать имя пользователя и пароль для получения токена аутентификации в конфигурации системы.
Basic (базовый тип)
При использовании базового типа аутентификации, внесите в поля Логин и Пароль соответствующие данные для аутентификации во внешней системе.
Если получение аутентификационных данных ожидается из сервиса Управление пользователями, установите флажок Получать пароль из модуля Credential. При этом поле Пароль станет недоступным для заполнения. В поле Имя внешнего пользователя в этом случае указывается имя внешнего пользователя, созданного в сервисе Управление пользователями, учетные данные которого будут использоваться для аутентификации.
Примечание
Для внешнего пользователя должна быть выбрана текущая внешняя система. Это можно сделать, только если внешняя система уже создана.
Bearer
Веб-клиент с настроенной аутентификацией типа Bearer при включении получает токен авторизации (при неудачной попытке получения токена внешняя система в будет отображаться в Центре мониторинга в состоянии Сломано, при этом попытки попытки получить токен будут предприниматься автоматически). Впоследствии полученный токен будет использоваться при получении сообщений и при отправке сообщений во внешний сервис. Если полученный токен авторизации перестанет быть действительным для внешнего сервиса, потребуется ручной перезапуск внешней системы для получения нового токена.
Настройки аутентификации устанавливаются в режиме редактирования конфигурации внешней системы в значении поля asClient:
path: базовый адрес url, указанный в окне настроек внешней системы.
authTypeRest: тип аутентификации, указанный в окне настроек внешней системы.
authPath: адрес url внешнего сервиса, в котором нужно получить токен авторизации.
userName и passwordNew в поле account: имя пользователя и пароль для получения токена авторизации во внешнем сервисе, указанном в authPath.
Поле url в поле authorization: путь API-запроса получения токена, который будет добавлен к authPath. В поле можно указывать параметры {user_name} и {password}, в них подставятся значения userName и passwordNew.
methodType в поле authorization: тип API-запроса для получения токена (GET, POST, PUT).
tokenPath: наименование поля, в котором хранится токен-авторизации, в json-ответе внешнего сервиса, в котором нужно получить токен авторизации.
Пример части конфигурации веб-сервис-клиента, в которой указаны параметры авторизации для подключения к внешнему веб-сервису http://srv-dt-dev01:7635/ работающему с аутентификацией с использованием токена Bearer (получение токена осуществляется с помощью выполнения POST-запроса http://srv-dt-dev01:7635/api/session/token?login=user1&password=password1):
{ "$type": "DT.ClusterConfiguration.DtSystem, DT_Core", "config": { "asClient": { "$type": "DT.ConfigurationRepository.Configuration.Adapter.WebClientConfig, DT_ConfigurationRepository", "toPlatform": false, "fromPlatform": true, "readCookiesToPlatform": false, "readHeadersToPlatform": false, "responceCodes": [], "path": "http://srv-dt-dev01:7635/", "authTypeSoap": "Auto", "authTypeRest": "Bearer", "authPath": "http://srv-dt-dev01:7635/", "account": { "$type": "DT.ClusterConfiguration.Account, DT_Core", "userName": "user1", "passwordNew": "password1", "useCredential": false }, "threadCountFromPlatform": 0, "authorization": { "$type": "DT.ConfigurationRepository.Configuration.Adapter.AuthorizationSettings, DT_ConfigurationRepository", "accessToken": { "$type": "DT.ConfigurationRepository.Configuration.Adapter.AuthTokenSettings, DT_ConfigurationRepository", "tokenPath": "AccessToken", "url": "api/session/token?login={user_name}&password={password}", "methodType": "Post", "headers": { "$type": "System.Collections.Generic.Dictionary'2[[System.String, System.Private.CoreLib],[System.String, System.Private.CoreLib]], System.Private.CoreLib" } } }, "proxyOptions": { "$type": "DT.ConfigurationRepository.Configuration.Adapter.ProxyOptions, DT_ConfigurationRepository", "useCustomProxy": false, "proxyAddress": "", "bypassProxyOnLocal": true, "useDefaultCredentials": true, "needServerAuthentication": true }, "allowIfServerCertificateValidationFailed": false } } }
Пример json-ответа внешнего сервиса, в котором нужно получить токен авторизации для случая выше:
{ "AccessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImludHVzZXIiLCJTZXNzaW9uSWQiOiJiYTBhZmVkNy01NmFlLTRmZDYtOGE5Yy04YTlkZjVmMjkwYmUiLCJVc2VySWQiOiJjOTJmNzcxMS1lOThlLTQ1MTctYTUzNS04MzlhZWQ1MmViYzciLCJuYmYiOjE3MDMyMzU0MzQsImV4cCI6MTcwMzIzOTAzNCwiaWF0IjoxNzAzMjM1NDM0LCJpc3MiOiJEYXRhcmVvblBsYXRmb3JtIiwiYXVkIjoiRGF0YXJlb25XZWJTZXJ2aWNlIn0.AL_4rrkHgT-Oi2jHjF4oZuT17PI0c_JtukSdiFIXKLo", "Username": "user1", "RefreshToken": null, "UserId": "c92f7711-e98e-4517-a535-839aed52ebc7", "SessionId": "ba0afed7-56ae-4fd6-8a9c-8a9df5f290be", "IsAdmin": false }
Редактирование конфигурации
Для проверки соответствия выбранных обработчиков веб-системе требуется Проверить конфигурацию с помощью Редактора конфигурации. Для перехода в режим редактора конфигурации нажмите на соответствующую кнопку:
Внимание
Перед переходом в режим редактора конфигурации сохраните внесенные данные!
В результате отобразится интерфейс для установки дополнительных настроек:
Для выхода из редактора конфигурации нажмите на кнопку Редактор конфигурации повторно (будет отображена подсказка Перейти в режим диалога).
В окне редактора можно просмотреть, изменить или добавить новые параметры конфигурации.
В конфигураторе доступен блок Config с подблоками asServer (параметры системы веб-сервис-сервер) и asClient (параметры системы веб-сервис-клиент).
Параметры подблока asServer:
Параметр |
Тип данных |
Описание |
---|---|---|
esb24 |
boolean |
Совместимость с Datareon ESB 2.4 |
bodyType |
ByteArray |
Тип тела сообщения (только для протокола SOAP) |
fromPlatform |
boolean |
Направление из Платформы |
toPlatform |
boolean |
Направление в Платформу |
portFromPlatform |
string |
Порт из Платформы |
portToPlatform |
string |
Порт в Платформу |
useHttps |
boolean |
Использование протокола HTTPS |
authTypeRest |
string |
Тип авторизации REST подключения |
authForProcesses |
boolean |
Проброс авторизации пользователя в процесс |
Примечание
Если значение параметра authForProcesses = true, при отправке сообщения от авторизованного пользователя к сообщению будет добавлен идентификатор пользователя (userid). Для корректной работы параметра сервис Управление пользователями должен быть активен.
Параметры подблока asClient:
Параметр |
Тип данных |
Описание |
---|---|---|
fromPlatform |
boolean |
Направление из Платформы |
toPlatform |
boolean |
Направление в Платформу |
readCookiesToPlatform |
boolean |
Чтение cookies |
readHeadersToPlatform |
boolean |
Чтение заголовков |
responceCodes |
ResponceCode |
Настройка успешности у кодов ответа |
path |
string |
Путь подключенного сервиса |
authTypeSoap |
string |
Тип авторизации SOAP подключения |
authTypeRest |
string |
Тип авторизации REST подключения |
authForProcesses |
boolean |
Количество потоков в направлении «Из Платформы» |
threadCountFromPlatform |
integer |
Количество потоков в направлении «Из Платформы» |
useCustomProxy |
boolean |
Использование пользовательского прокси-сервера |
proxyAddress |
string |
Адрес прокси-сервера |
bypassProxyOnLocal |
boolean |
Использование прокси-сервера в запросах к локальным ресурсам |
useDefaultCredentials |
boolean |
Использование идентификационных данных по умолчанию |
needServerAuthentication |
boolean |
Необходимость идентификации на сервере |
Примечание
Если в параметрах обработчика указать параметр Accept-Encoding как header (заголовок), он будет игнорироваться системой, и заголовок в ответе получен не будет.
Параметр responceCodes используется в ответном сообщении для проверки успешности выполнения шага процесса, например, при ответе после шага Отправка.
Пример использования responceCodes:
"responceCodes": [
{
"$type": "DT.ConfigurationRepository.Configuration.Adapter.ResponceCode,
DT_ConfigurationRepository",
"code": 555,
"isSuccess": true
},
{
"$type": "DT.ConfigurationRepository.Configuration.Adapter.ResponceCode,
DT_ConfigurationRepository",
"code": 405,
"isSuccess": false
}
]
В результате запроса во внешней системе и в сервисе обработки процессов код ответа 555 будет возвращаться как успешный, а код 405 как неуспешный.
Пример конфигурации для использования прокси-сервера:
"proxyOptions": {
"$type": "DT.ConfigurationRepository.Configuration.Adapter.ProxyOptions, DT_ConfigurationRepository",
"useCustomProxy": true,
"proxyAddress": "http://5.55.555.55:5555",
"bypassProxyOnLocal": false,
"useDefaultCredentials": false,
"needServerAuthentication": true
}
Примечание
Для введения идентификационных данных при использовании прокси-сервера следуйте инструкции, приведенной в разделе Использование внешних пользователей для авторизации.
Для конфигурации веб-сервис-сервер можно включить аутентификацию c использованием токенов доступа Bearer (рекомендуемый способ) или использовать базовую (Basic) схему аутентификации. Для аутентификации Bearer используются учетные данные пользователей, созданных в сервисе Управление пользователями.
Пример конфигурации для включения аутентификации:
{
"$type": "DT.ClusterConfiguration.DtSystem, DT_Core",
"config": {
"authTypeRest": "Bearer",
"auth": {
"$type": "DT.ClusterConfiguration.AuthenticationConfig, DT_Core",
"enabled": true,
"usePasswordHash": false
}
}
}
После внесения данных нажмите на кнопку Сохранить, после этого нажмите на кнопку Применить конфигурацию: