Я использую нативный php SoapClient для создания клиента для использования веб-службы. Мне нужно подписать заголовки запроса мыла для отправки запроса на сервер. Кто-нибудь делал это раньше? Я не мог найти последнюю информацию. Это расширение php называется WSF, но оно старое (прошло 6 лет, оно не обновлялось). Если вы сделали это раньше, пожалуйста, дайте мне знать. Заранее спасибо.
WSF для PHP давно не поддерживается, и работать с последними версиями PHP очень сложно (пожалуйста, опишите вашу среду разработки).
Axis2 / c — основная инфраструктура Soap, стоящая за WSF для PHP, всегда поддерживается, но не активно. (и полный memleak для 1.6.0) Однако, некоторые парни имеют дело с выпуском 1.7.0.
когда мы говорим о подписании, мы имеем в виду реализацию стратегии WS-Security. На заднем плане это модуль Axis2 / c с именем Rampart / c. Rampart / c ATTIC (см. http://attic.apache.org/) означает, что устарел, но все еще работает нормально с последним из Axis2 / c (svn trunk)
Непонятно, что вы хотите подписать. Если вы ссылаетесь на реализацию токена имени пользователя, вы можете попробовать установить WSF для PHP самостоятельно. Вам нужно будет установить объекты WSUsernameToken и WSPolicy с соответствующими учетными данными и политикой в соответствии с вашим мыльным контрактом. В противном случае, если вы хотите подписать некоторые части ваших заголовков мыла (например, WS-Adressing (replyTo и т. Д.), Пожалуйста, сообщите.
так что если вы говорите о UsernameToken, рабочая политика будет выглядеть так:
<wsp:Policy wsu:Id="RmPolicy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm/policy" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" xmlns:sanc="http://ws.apache.org/sandesha2/c/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding>
<wsp:Policy>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens
</wsrm:RMAssertion>
</wsp:All>
</wsp:ExactlyOne>
Я решил переписать расширение Php для Axis2 / c (только клиент), используя PHPCPP. Здесь вы найдете проект.
если вы работаете в Ubuntu и PHP> = 5.6, вы можете попробовать это решение и предоставить дополнительную обратную связь. Я перенес заголовок, SecurityToken, Policy, Fault, Client, Message. Я продолжу улучшать его, и все еще есть некоторые недостающие функции. Установка не легка и требует компиляции всего
Теперь о выполнении этой работы на родном PHP .. не знаю.
Других решений пока нет …