Как настроить API к закрытой системе?

Добрый день, думаю над следующим вопросом:

- Имеем:
1) Сайт под управлением нашей компании. Обычный сайт на apache+nginx+php на который заходят пользователи и тд. [site.ru]
2) CRM система. Тоже на apache+nginx+php, но на нее нельзя попасть из внешней сети, хотя она доступ имеет. То есть можно сделать ping site.ru с сервера crm.ru, но при этом ping crm.ru с site.ru - не прокатит. [crm.ru]
3) Сайт под управлением третьего лица, который предоставляет нам услуги. На чем он работает - не известно и думаю не особо то важно. [site-2.ru]
4) Цели - [site-2.ru] хочет в режиме реального времени получать данные по апи от [crm.ru].

Вот вопрос - как это можно реализовать, желательно не открывая портов, сети и тд?
Первое что мне в голову пришло - развернуть на [site.ru] сокет-сервис, который будет прослушиваться со стороны [crm.ru]. Но я совсем плох в сокетах, и может это вообще не то.

В общем прошу совета по реализации указанной цели.
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
А никак, вообще. Если вы не можете изменить сайт с серверной стороны то это означает что вам доступны только клиентские изменения, которые не смогут достучаться до CRM. Вот и все. CRM в сайт ничего не пошлет по тому что с серверной стороны вы беспомощны.

Кроме того вы хотите API от CRM, а это значит что в лучшем случае вам понадобится VPN соединение с CRM. Ну, или выносить CRM в паблик или открывать порты
Ответ написан
bingo347
@bingo347
Crazy on performance...
site-2.ru просто пишет у себя в nginx новый location, по которому требует клиентский сертификат tls (имеющийся на стороне crm.ru, это нужно чтоб никто больше не мог этот location дернуть)
crm.ru дергает post запрос по этому локейшену и скидывает туда обновления данных
site.ru в взаимодействии между site-2.ru и crm.ru вообще не нужен
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Если crm.ru за NAT, это означает, что без проброса портов site-2.ru никак (ну вот от слова совсем) не сможет инициировать к ней соединение. Либо он сигналит на site.ru, чтобы crm.ru сама установила соединение с site-2.ru, либо нужно пробросить порт, по которому site-2.ru отошлет команду к crm.ru
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы