October 23rd, 2012, 12:21 PM
SoapClient with Authentication and Certificate to DotNet WebService
My mission is to develop a client to a third party's webservice, which server machine and source codes I can't access or handle. All I have is the API specifications and the addresses.
The program works fine on DevelopEnvironment without authentication, but at ProductionEnvironment it requires basic http authentication plus certificate, and then I can't even receive any answer.
They said me that I could use a self-signed certificate, so I've created one in my Server ( CentOS Apache2+PHP5.3.3 ).
The company sent me a functional DotNetServiceClient piece of code, which includes the app.config which follows bellow.
I need some example of how to send this authentication and more the certificate in PHP SoapClient or CURL.
Here is the C# application's app.config, with fake IP and certificate:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.net> <settings> <servicePointManager expect100Continue="false" /> </settings> </system.net> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHttpBinding_ISyasAutoServices"> <security> <message clientCredentialType="UserName" /> </security> </binding> </wsHttpBinding> </bindings> <client> <endpoint address="SERVICE_URL" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ISyasAutoServices" contract="ServiceReference1.ISyasAutoServices" name="WSHttpBinding_ISyasAutoServices"> <identity> <certificate encodedValue="AwAAAAEAAAAUAAAAmqc2gWanBIqn7sbzoxWEw==" /> </identity> </endpoint> </client> <behaviors> <endpointBehaviors> <behavior> <clientCredentials> <serviceCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck"/> </serviceCertificate> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> </system.serviceModel> </configuration>
And here is my current client code:
The answer: No answer! Only timeOut.
/* PHP WebService Client */
$connectionParameters = array(
'login' => 'login'
,'password' => 'password'
,'trace' => TRUE
,'encoding' => 'UTF-8'
,'exceptions' => TRUE
,'cache_wsdl' => WSDL_CACHE_NONE
,'soap_version' => SOAP_1_2
,'local_cert' => file_get_contents('/my/certificate/directory/selfsignedcertificate/thatwebservice.pem')
,'passphrase' => 'd3e343der434wds'
$theClient = new SoapClient($serverWSDLURL, $connectionParameters);
$r = $theClient->GetBasicWorkData();
Any example or tip?
Thank you very much.