Во-первых, позвольте мне "предупредить", что я не являюсь разработчиком PHP и довольно не разбираюсь в PHP. Я являюсь разработчиком рассматриваемой службы WCF и пытаюсь поддержать разработчика PHP в штате, который пытается использовать эту службу.
У него нет логина в Stackoverflow, и он очень зол на WCF, чтобы набрать что-нибудь без ненормативной лексики; -)
В любом случае, служба использует следующую конфигурацию безопасности:
<security mode="Message">
<message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
Это означает, что сообщение зашифровано по линии, я считаю, что для этого требуется сертификат, который был установлен на веб-сервере, и при использовании службы из .NET работает без каких-либо проблем.
Мы рассмотрели связь фиддлера и подозреваем, что RequestSecurityTokenResponse имеет значение. Я подозреваю, что рукопожатие, когда клиент запрашивает маркер безопасности, генерируется с GUID в качестве ссылки, значение используется для шифрования запроса, а GUID отправляется в качестве ссылки.
Хотя это все предположения, так что пока мы не смогли получить запросы, даже удаленно выглядящие одинаково.
Любые указатели в правильном направлении будут высоко оценены.
Пока что мы пытаемся это сделать с помощью WSE-PHP, который можно найти через Google.
EDIT:
Мы смогли подтвердить свои мысли с Fiddler, и работающие клиенты, похоже, совершают рукопожатие, всего есть три запроса (и ответа), которые, кажется, обмениваются только информацией о безопасности, они вызывают следующие действия:
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue
http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
После этого последнего вызова делается запрос с действием, которое, по-видимому, указывает на вызов фактического метода веб-сервиса:
http://XXXXXXXXXXXXXX/WCF/ICompany/TestConnection
Это, похоже, связано с SAML (я люблю тебя, Google), поэтому я добавил это как тег.