带有证书的Soapclient和DotNet WebService的基本身份验证

时间:2012-10-23 17:13:29

标签: php xml wcf web-services soap-client

我的任务是将客户端开发给第三方的Web服务,这是我无法访问或处理的服务器机器和源代码。我所拥有的只是API规范和地址。 该程序在没有身份验证的情况下可以在DevelopEnvironment上正常工作,但在ProductionEnvironment中它需要基本的http身份验证和证书,然后我甚至无法收到任何答案。 他们说我可以使用自签名证书,所以我在我的服务器上创建了一个(CentOS Apache2 + PHP5.3.3)。

该公司向我发送了一个功能性的DotNetServiceClient代码段,其中包含app.config,该链接如下所示。

我需要一些如何在PHP SoapClient或CURL中发送此身份验证和证书的示例。

这是C#应用程序的app.config,带有假IP和证书: http://pastebin.com/Jt9k6DB0

这是我目前的客户代码:

/* PHP WebService Client */

$pemPath   = '/my/certificate/directory/selfsignedcertificate/thatwebservice.pem';
$pemBuffer = file_get_contents($pemPath);

$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'   => $pemBuffer,
    'passphrase'   => 'd3e343der434wds',
);

$theClient = new SoapClient($serverWSDLURL, $connectionParameters);
$r         = $theClient->GetBasicWorkData();

答案:没有答案!只有timeOut。

我已经调整了从这两个StackOverflow主题中获取的信息:

  1. How to use PHP5 SoapClient::SoapClient() with client certificate?
  2. SoapClient not sending certificate

1 个答案:

答案 0 :(得分:0)

最后,他们的生产服务器工作不正常,他们改变了几个设置和参数。 我使用了简单的CURL基本http身份验证,已经完成了。