我现在有与被调用通过SoapClient的Web服务的PHP页面一起在IIS上承载一个vb.net ASMX Web服务。
我需要验证对ActiveDirectory中的web服务,我想通这样做将启用IIS摘要式身份验证,并允许用户输入他们的AD用户名/密码进入PHP页面,并在发送的SOAPHeaders此认证的最简单的方法。
我不能很清楚如何试图联系WSDL(这也是背后的摘要式身份验证)时,去了解这一点,尤其是。
任何帮助,将不胜感激。
谢谢
编辑:我已经试过:
SERVICE_URL点http://mypage/service.asmx?wsdl
尝试1:用户和通过为MD5
$options = array(
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'realm' => 'myrealm',
'login' => $_SESSION['authUser'],
'password' => $_SESSION['authPass']
);
try { $client = new SoapClient(SERVICE_URL, $options); }
尝试2:验证是“用户”:“境界”:“通”作为MD5:
$options = array(
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'login' => $_SESSION['auth']
);
try { $client = new SoapClient(SERVICE_URL, $options); }
您可以添加使用SoapHeader()
类/对象(SoapHeader() documentation)和SOAP对象操作__setSoapHeaders()
(__setSoapHeaders() documentation)头添加到您的SOAP客户端。
您的要求会是这个样子:
<?php
$options = array(
'authentication' => SOAP_AUTHENTICATION_DIGEST,
'realm' => 'myrealm',
'login' => $_SESSION['authUser'],
'password' => $_SESSION['authPass']
);
try {
$client = new SoapClient(SERVICE_URL, $options);
// create and populate header array
$headers = array();
$headers[] = new SoapHeader('MYNAMESPACE',
'authentication',
'SOAP_AUTHENTICATION_DIGEST');
$headers[] = new SoapHeader('MYNAMESPACE',
'realm',
'myrealm');
$client->__setSoapHeaders($headers); // set headers
$client->__soapCall("echoVoid", null); // make soap call
}
?>