Acessando de qualquer lugar uma API que exige um IP fixo

dilbert_13012007_integracao

Começamos esta semana o nosso primeiro projeto com o Mule ESB, uma ferramenta excepcional sobre a qual falaremos muitas vezes em breve. No projeto em questão, precisamos nos integrar com uma API que só libera acesso para IPs previamente configurados.

Problema

Conectar a uma API SOAP que bloqueia o acesso a partir de IPs que não estejam previamente configurados. A maioria dos links empresariais de internet já não tem IP fixo e nenhum residencial tem. Processo de desenvolvimento ficaria muito mais complicado e demorado.

Solução escolhida

Configurar um servidor de proxy em uma instância em Cloud para encaminhar todas as requisições à API de um mesmo IP fixo. Na teoria seria moleza, mas a API não analisa somente o IP do cliente, mas também alguns cabeçalhos HTTP como o X-Forwarded-For e outros metadados das requisições. Isto trouxe algumas dores de cabeça até completarmos finalmente o diagnóstico e conseguirmos resolver. A solução final consistiu em ter o proxy atuando como um proxy anônimo, sem deixar evidências de que estava sendo usado um proxy.

Como fazer

– Instalar Squid em uma instância com IP fixo. No nosso caso com Amazon Linux:

– Liberar acesso ao Squid a partir de qualquer lugar. Adicionar as seguintes linhas no arquivos /etc/squid/squid.conf

– Configurá-lo para não gravar headers que identifique que ele está sendo usado. Adicionar as seguintes linhas no arquivo /etc/squid/squid.conf:

– Configurar sua aplicação cliente para usar o novo proxy. Se for uma aplicação que rode via console, você pode fazer de acordo com o IP do Squid:

Se for o SoapUI você pode ir em File -> Preferences e configurar, conforme abaixo.
soapui_proxy_preferences

Se for uma aplicação Java qualquer, você pode configurar através de parâmetros da JVM, como:

Pronto, já pode acessar a API de qualquer lugar e testá-la com qualquer ferramenta desejada! Enjoy! :)

21