Как маршрутизировать запросы API через определенный IP? - PullRequest
0 голосов
/ 12 марта 2019

Я делаю приложение для iOS и Android. Нам требуется функциональность пополнения в приложении. Мы планируем использовать API пополнения баланса, предоставляемый компанией.

По соображениям безопасности API разрешает запрос только через определенные IP-адреса из белого списка.

В идеале этот IP-адрес должен быть IP нашего сервера.

Но мы используем Firebase в качестве базы данных и хранилища и аутентификации в нашем приложении.

Так, как мы можем сделать так, чтобы запросы API, сделанные через Приложение нашими пользователями, проходили и не вызывали ошибку, поскольку IP-адрес пользователя не будет внесен в белый список?

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

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

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

Вы можете использовать NGINX, HAProxy или просто любой доступный обратный прокси-сервер или написать собственный, используя язык по вашему выбору - так как это не сложное назначение.

Здесь показано, как настроить обратный прокси-сервер с помощью HAProxy на компьютере с Linux.

Сначала установите haproxy с терминала linux

apt update && apt install haproxy

Затем перейдите в папку /etc/haproxy

cd /etc/haproxy

Переименуйте файл конфигурации по умолчанию в haproxy.cfg.backup

mv haproxy.cfg{,.backup}

Теперь создайте новый файл конфигурации, haproxy.cfg

nano haproxy.cfg

Со следующим содержимым, а затем сохранить изменения.

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode http
    timeout connect 5000
    timeout client  50000
    timeout server  50000

frontend api_proxy
    bind *:8080
    mode http
    default_backend remote_api_server

backend remote_api_server
    #replace 10.10.10.10 with the actual Ip address
    server server1 10.10.10.10:443 ssl

Заменить 10.10.10.10 IP-адресом провайдера API, а 443 - фактическим портом.

Если API не использует HTTPS, удалите опцию ssl

8080 - это порт, к которому ваши пользователи будут подключаться. Измени на что хочешь.

Теперь запустите haproxy, используя следующую команду:

haproxy -D -f haproxy.cfg

Вы можете убедиться, что haproxy прослушивает порт 8080

telnet localhost 8080

Настройте приложение для вызова API пополнения баланса через URL-адрес прокси, который будет:

http://your_server_ip_address:8080/your/api/url

Вам потребуется настроить HTTPS в производственной среде.

Проверьте ссылку ниже о том, как настроить SSL с haproxy

https://www.ibm.com/support/knowledgecenter/en/SSTPQH_1.0.0/com.ibm.cloudant.local.install.doc/topics/configure_haproxy.html

Дайте мне знать, если это поможет.

0 голосов
/ 12 марта 2019

Развертывание сервера по вашему выбору может быть Ubuntu или Windows с выбранным вами языком, который может перенаправлять ваши запросы на требуемый сторонний API.

Таким образом, в идеале все запросы от вашего клиента будут отправляться на ваш сервер, а затем ваш сервер разрешит запрос третьему лицу и ответит вашим клиентам.

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

https://scotch.io/tutorials/build-a-restful-api-using-node-and-express-4

...