PHP SOAP ws-security - PullRequest
       7

PHP SOAP ws-security

3 голосов
/ 09 февраля 2012

Мне нужно связаться с веб-сервисом, написанным на .Net, используя SOAP. Этот веб-сервис требует аутентификации ws-security с сертификатом и пользователем / паролем. Аутентификация определяется так:

<security mode="Message">
    <transport clientCredentialType="None"  />
    <message clientCredentialType="UserName" />
</security>

Есть ли библиотека, которая реализует ws-security для PHP? Или, может быть, где-то можно найти хороший пример того, как реализовать это с помощью PHP SoapClient? Все, что я нашел, это фрагмент кода, который работает только с UserNameToken:

$ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';

$token = new \stdClass();
$token->Username = new \SoapVar('<username>', XSD_STRING, null, null, null, $ns);
$token->Password = new \SoapVar('<password>', XSD_STRING, null, null, null, $ns);

$wsec = new \stdClass();
$wsec->UsernameToken = new \SoapVar($token, SOAP_ENC_OBJECT, null, null, null, $ns);

$headers = new \SoapHeader($ns, 'Security', $wsec, true);

$this->soapClient = new \SoapClient('<wsdlurl>',array());

$this->soapClient->__setSoapHeaders($headers);

Но служба отвечает

The security context token is expired or is not valid. The message was not processed.

1 Ответ

0 голосов
/ 13 мая 2013

Взгляните на NuSoap

Я использовал его много лет назад, он был более продвинутым, чем стандартный PHP-клиент.Особенно при общении между платформами

...