Защита публичных WebService каналов

В Oktell Studio Bridge есть возможность добавления неголосовых транков - внешних Web каналов. Подключение может работать по интерфейсу HTTP(S) WebHook и WebSocket.

Безопасность

Схема подключения SIP устройств
Рис. 1. Прямое выполнение запросов к web-сервису

Схема подключения через Bridge защищает web-сервис компании от взлома, и позволяет обеспечить сетевую безопасность локальной сети предприятия. Bridge способен обрабатывать большое количество запросов, отражает DoS/DDoS-атаки. Защищает от перехвата трафика в тех случаях, когда нет возможности использовать защищенные протоколы на стороне самого web-сервиса, предотвращая утечки информации.

Для обработки всех входящих Web запросов, которые поступают в Oktell Studio существует специальная роль WS. Экземпляров WS роли может быть один или несколько. Каждый экземпляр WS может располагаться на отдельном интерфейсе. Роли WS могут одновременно обрабатывать все запросы, поступающие в рамках одного домена. Все компоненты системы имеют высокий уровень отказоустойчивости, способны обрабатывать большое количество запросов.

Подключение Web канала через Bridge
Рис. 2. Подключение Web канала через Bridge

Подключение Web канала

Перед добавлением нового внешнего Web канала требуется создать служебный сценарий, в котором будет настраиваться обработка входящего запроса. Добавление Web канала производится в разделе внешние интеграции. При добавлении внешней интеграции системой автоматически присваивается локальный токен.

Создание служебного сценария

SVC сценарии

На главной странице Bridge открыть приложение администрирования Настройки. C левой стороны в области Объекты перейти в раздел Web каналы - SVC сценарии и нажать newObject.

SVC создание

Откроется Создание объекта. Прописать Название сценария и Код сценария. Нажать saveButton.

В списке сценариев отобразится новый служебный сценарий, в котором дальнейшем потребуется реализовать логику работы для поступающих запросов.

Создание внешней интеграции

Внешние интеграции

В области Объекты перейти в раздел Web каналы - Внешние интеграции и нажать newObject.

Основные

Откроется Создание объекта. В блоке Основные прописать Код, Тип канала интеграции выбрать Публичный канал, включить Разрешить работу с файлами через этот публичный канал.

Внешняя система

В блоке Внешняя система в поле URL для исходящих запросов указать адрес Web сервиса, который будет защищен.

Сценарии обработки

В блоке Сценарии обработки выбрать Сценарий обработки входящего WebHook запроса - указать служебный сценарий, который создан ранее специально для этого внешнего Web канала. Нажать saveButton.

Получение локального токена

После создания новой внешней интеграции система автоматически создаст и присвоит уникальный локальный токен. Токен можно получить в свойствах внешней интеграции:

Локальный токен

С помощью локального токена формируется URL адрес, при обращении к которому происходит запуск служебного сценария, который привязан к внешней интеграции. Используя токен можно обращаться к любому интерфейсу на котором работает роль WS. URL адрес формируется следующим образом:

https://[WS]/api/token/v1/[token_local]

где [WS] - адрес интерфейса, на котором расположена роль WS и [token_local] - локальный токен.

Настройка служебного сценария

В области Объекты перейти в раздел Web каналы - SVC сценарии. В строке служебного сценария нажать Открыть в редакторе.

Открыть в редакторе

Обработка запроса в служебном сценарии разделен на следующие блоки:

Авторизация и идентификация

IP адрес

Добавить проверку по IP адресу клиента, функция starparam(4) передает в качестве входного параметра IP адрес.

403

Если IP адрес не совпадает вернуть в ответе на web-запрос код ответа 403, response_code - служебная переменная передает в качестве response_code.

Парсер

Получение логина и пароля для авторизации. Компонент Парсер извлекает восстановленное содержимое из JSON структуры, полученной из функции starparam(4) - Body запроса.

LDAP

Авторизация через Active Directory. Компонент LDAP-интеграция отправляет логин и пароль на сервер Active Directory - получает в ответ результат авторизации. В случае отказа - response_code 403.

Запрос к защищаемому web-сервису

POST запрос

Выполнение Web запроса к защищаемому web-сервису, передача данных полученных из функции starparam(4) - Body запроса. Сохранение ответа в переменную output, в случе ошибки - в переменную error

Анализ ответа от защищаемого web-сервиса

Ошибка

Проверка ответа в переменной error, если есть ошибка - отправка response_code 403.

Отправка возвращаемого значения

Возвращаемое значение

Присвоение response_content значения переменной output для передачи возвращаемого значения, отправка response_code 200.