首先让我“警告”你,我不是 PHP 开发人员,我对 PHP 一无所知。我是有问题的 WCF 服务的开发人员,我正在尝试支持正在尝试使用此服务的员工中的 PHP 开发人员。
他没有 Stackoverflow 登录名,正忙着在 WCF 上发脾气,因为他在没有亵渎的情况下输入任何内容;-)
无论如何,该服务使用以下安全配置:
<security mode="Message">
<message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
这意味着消息是通过线路加密的,我相信这需要一个已安装在网络服务器上的证书,并且在从 .NET 使用服务时完全没有任何问题。
我们查看了提琴手通信并怀疑 RequestSecurityTokenResponse 是重要的。我怀疑客户端请求安全令牌的握手,这是使用 GUID 作为参考生成的,该值用于加密请求,并且 GUID 作为参考发送。
不过,这都是猜测,到目前为止,我们还无法让请求看起来完全一样。
任何指向正确方向的指针都将不胜感激。
到目前为止,我们正在尝试使用 WSE-PHP,这可以通过 google 找到。
编辑:
我们已经能够与 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
在最后一次调用之后,会发出一个请求,其中一个动作似乎表明调用了实际的 web 服务方法:
http://XXXXXXXXXXXXXX/WCF/ICompany/TestConnection
这似乎与 SAML(我爱你 google)有关,所以我将其添加为标签。