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.
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.
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.
– Instalar Squid em uma instância com IP fixo. No nosso caso com Amazon Linux:
sudo yum install squid sudo chkconfig squid on sudo /etc/init.d/squid start
– Liberar acesso ao Squid a partir de qualquer lugar. Adicionar as seguintes linhas no arquivos /etc/squid/squid.conf
acl geral src 0.0.0.0/0 http_access allow geral
– Configurá-lo para não gravar headers que identifique que ele está sendo usado. Adicionar as seguintes linhas no arquivo /etc/squid/squid.conf:
#Hide header and squid info request_header_access Allow allow all request_header_access Authorization allow all request_header_access WWW-Authenticate allow all request_header_access Proxy-Authorization allow all request_header_access Proxy-Authenticate allow all request_header_access Cache-Control allow all request_header_access Content-Encoding allow all request_header_access Content-Length allow all request_header_access Content-Type allow all request_header_access Date allow all request_header_access Expires allow all request_header_access Host allow all request_header_access If-Modified-Since allow all request_header_access Last-Modified allow all request_header_access Location allow all request_header_access Pragma allow all request_header_access Accept allow all request_header_access Accept-Charset allow all request_header_access Accept-Encoding allow all request_header_access Accept-Language allow all request_header_access Content-Language allow all request_header_access Mime-Version allow all request_header_access Retry-After allow all request_header_access Title allow all request_header_access Connection allow all request_header_access Proxy-Connection allow all request_header_access All deny all
– 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:
export http_proxy=http://x.x.x.x:3128/
Se for o SoapUI você pode ir em File -> Preferences e configurar, conforme abaixo.
Se for uma aplicação Java qualquer, você pode configurar através de parâmetros da JVM, como:
-Dhttp.proxyHost=x.x.x.x -Dhttp.proxyPort=3128 -Dhttps.proxyHost=x.x.x.x -Dhttps.proxyPort=3128
Pronto, já pode acessar a API de qualquer lugar e testá-la com qualquer ferramenta desejada! Enjoy! 🙂
Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.