Jump to content

Call SOAP method via CURL in PHP,call require client authentication


pillar.of.autumn

Recommended Posts

OVERVIEW:

 

The code is about making call to the escreen web service using SOAP and Curl with client authentication required. Currently I am not getting any result only HTTP 403 and 500 errors.

The call requires client authenticate cert to be on the callng site.

 

CODE:

    $content = "<TicketRequest>
      <Version>1.0</Version>
      <Mode>Test</Mode>
      <CommitAction></CommitAction>
      <PartnerInfo>
      <UserName>xxxxxxxxxx</UserName>
      <Password>xxxxxxxxxxx</Password>
      </ PartnerInfo>
      <RequestorOrderID></RequestorOrderID>
      <CustomerIdentification>
        <IPAddress></IPAddress>
        <ClientAccount>xxxxxxxxxx</ClientAccount>
        <ClientSubAccount>xxxxxxxxxx</ClientSubAccount>
        <InternalAccount></InternalAccount>
        <ElectronicClientID></ElectronicClientID>
      </CustomerIdentification>
      <TicketAction>
        <Type></Type>
        <Params>
          <Param>
          <ID>4646</ID>
          <Value></Value>
          </Param>
        </Params>
      </TicketAction>
    </TicketRequest>";
    
    $wsdl  = "https://services.escreen.com/SingleSignOnStage/SingleSignOn.asmx";
    
    $headers = array(  "Content-type: text/xml;charset=\"utf-8\"", 
         "Accept: text/xml", 
         "Cache-Control: no-cache", 
         "Pragma: no-cache", 
      //   "SOAPAction: \"\"", 
         "Content-length: ".strlen($content),
        ); 
     
    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $wsdl); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_VERBOSE, '1');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $content); 
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');
    //curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    //curl_setopt($ch, CURLOPT_HTTPHEADER, array('SOAPAction: ""')); 
    curl_setopt($ch, CURLOPT_CAPATH, '/home/pps/');
    curl_setopt($ch, CURLOPT_CAINFO,  '/home/pps/authority.pem');
    curl_setopt($ch, CURLOPT_SSLCERT, 'PROTPLUSSOL_SSO.pem');
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'xxxxxxxxxxxx');
    
    $output = curl_exec($ch);
    
    // Check if any error occured
    if(curl_errno($ch))
    {
        echo 'Error no : '.curl_errno($ch).' Curl error: ' . curl_error($ch);
    }
    
    print_r($output);

 

QUESTIONS:

 

1. I need to call the RequestTicket method and pass the XML string to it.

  I don't know how to do it here(pass the method name to call).

 

2. For client authentication they gave us three certs, one root cert, one intermediate

  cert and a client authentication cert PROTPLUSSOL_SSOpem(it was a .pfx file). Since we are on linux we converted them to pem . In curl calls I could not find way to how to include both the root cert and the intermediate cert ,so I combined them by making a new pem file and copying the intermediate cert and them the root cert and naming it authority.pem .

I am not sure whether it works or not and would like your opinion.

 

3. For the current code Iam getting the error

  Error no : 77 Curl error: error setting certificate verify locations: CAfile: /home/pps/authority.pem CApath: /home/pps/

 

 

  If I disable the curl error message,I am getting blank page with page title 403 - Forbidden. Access is denied.

 

  If I comment out the CURLOPT_CAPATH and CURLOPT_CAINFO lines it gives http 500 error page with the message as content and the following at the top.

 

> HTTP/1.1 500 Internal Server Error. Cache-Control: private Content-Type: text/html Server: Microsoft-IIS/7.5 X-AspNet-Version: 1.1.4322 X-Powered-By: ASP.NET Date: Thu, 02 Sep 2010 14:46:38 GMT Content-Length: 1208

 

If I comment out as above and also CURLOPT_SSLCERT and CURLOPT_SSLCERTPASSWD it gives 403 error with the message as content.

 

So I would request you to help me out by pointing out whats wrong with the current code.

 

Thank you.

 

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.