If WSO2 ESB is behind a firewall, your proxy service might need to talk to a server through a proxy server, which might require HTTP basic authentication.
To configure the ESB to communicate with the proxy server:
In
<PRODUCT_HOME>/repository/conf/axis2/axis2.xml
, edit thetransportSender
configuration of the http transport to specify the proxy server as follows:<transportSender name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpSender"> <parameter name="non-blocking" locked="false">true</parameter> <parameter name="http.proxyHost" locked="false">localhost</parameter> <parameter name="http.proxyPort" locked="false">8080</parameter> </transportSender>
In the Synapse configuration of the proxy service that sends messages to this proxy server, set the following two properties before the send mediator:
<syn:property name="Proxy-Authorization" expression="fn:concat('Basic ', base64Encode('userName:password'))" scope="transport"/> <syn:property name="POST_TO_URI" value="true" scope="axis2"/>
The first property sets the
Proxy-Authorization
HTTP transport header with the base64 encoded user name and password as expected by the HTTP basic authentication. The second property makes the outgoing URL a complete URL understandable by the proxy server.
For example, in normal scenarios the outgoing request is sent as following:
POST /services/SimpleStockQuoteService HTTP/1.1
But the proxy server requires sending the actual URL:
POST [http://localhost:9000/services/SimpleStockQuoteService] HTTP/1.1
Following is a sample proxy service configuration that sets these two properties:
<proxy name="StockQuoteProxy" startOnLoad="true" xmlns="http://ws.apache.org/ns/synapse"> <target> <inSequence> <property name="Proxy-Authorization" expression="fn:concat('Basic ', base64Encode('supun:test123'))" scope="transport"/> <property name="POST_TO_URI" value="true" scope="axis2"/> <send> <endpoint name="endpoint_urn_uuid_379C485AD3CB65037F10216600509076498395882"> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </inSequence> <outSequence> <send/> </outSequence> </target> <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/> </proxy>