Jump to content

Soapclient + Authentication + Certificate To C# Webservice


miguelpragier

Recommended Posts

Hello.

 

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="http://200.200.200.200/Auto/WebServiceAuto/SyasAutoServices.svc"
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:

/* 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();

 

The answer: No answer! Only timeOut.

Any example or tip?

 

Thank you very much.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.