我通过Soapclient使用Kerberos身份验证来使用服务。
网站托管在服务器A中,通过Kerberos身份验证进行访问,Web服务托管在服务器B中,并再次通过Kerberos身份验证进行访问。
Web服务基于经过身份验证的用户响应不同的个人内容。同一个Active Directory用于服务器A和服务器B身份验证。
服务器A从服务器B使用服务并在将响应呈现给浏览器之前对其进行后处理。用户浏览器可以访问服务器A中的所有内容,并且我们可以访问服务器B上的WSDL
。
问题在于SoapClient
,因为它未成功将用户Kerberos身份验证传输到服务器B服务。
我们有以下错误消息:
SOAP-ERROR:WSDL分析:无法从'https://***********/index.php加载? Wsdl':无法加载外部实体“https:// **** ******* / index.php?Wsdl”
当Kerberos authentication
暂时禁用时,可以通过SoapClient访问服务。
Server A
在IIS下安装了PHP 7。
为了模仿用户,我们为网站设置了Kerberos Double Hop。
是否可以使用SoapClient
传输Kerberos身份验证信息?
看来这是不可能的。在这里查看官方PHP bugtracker:https://bugs.php.net/bug.php?id=52231