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.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.