php从SOAP服务器获取SOAP头用户名和密码
我必须创建PHP,SOAP API。我需要从SOAP服务器验证SOAP客户端。 这是SOAP客户端的代码php从SOAP服务器获取SOAP头用户名和密码,php,soap,soap-client,nusoap,Php,Soap,Soap Client,Nusoap,我必须创建PHP,SOAP API。我需要从SOAP服务器验证SOAP客户端。 这是SOAP客户端的代码 $client = new SoapClient("cust.wsdl",array( "trace" => 1, "exceptions" => 0, "user" => 'username', "pass" => 'password')); $result = $client->getDetails($value1); 我需要从服务器(SOA
$client = new SoapClient("cust.wsdl",array(
"trace" => 1,
"exceptions" => 0,
"user" => 'username',
"pass" => 'password'));
$result = $client->getDetails($value1);
我需要从服务器(SOAP服务器)端捕获并验证这些用户名和密码。
这是我的SOAP服务器代码
class getDb {
//return DATA
}
$server = new SoapServer("cust.wsdl");
$server->setClass("getDb");
$server->handle();
我需要从SOAP服务器验证客户端的用户名和密码
任何人都知道如何捕获SOAP用户名和密码(“用户”=>“用户名”,
请提供来自SOAPSERVER的“pass”=>“password”)
$client = new SoapClient("cust.wsdl",array(
"trace" => 1,
"exceptions" => 0,
**"user" => 'username',
"pass" => 'password'));**
上面这两项通常是http身份验证用户名和密码。如果需要验证它们,那么可以在apache basic auth级别上进行验证。如果需要在php级别执行此操作,则需要编写一个基于http auth的会话处理程序,该处理程序需要安全性才能显示资源。这里有一个例子:大多数开发人员只使用绑定到LDAP或其他服务的apache basic auth来处理auth请求,并让soap服务处理实际工作。auth详细信息可以如下所示
if(($_SERVER['PHP_AUTH_PW']!= $pass || $_SERVER['PHP_AUTH_USER'] != $login)|| !$_SERVER['PHP_AUTH_USER'])
{
header('WWW-Authenticate: Basic realm="Test auth"');
header('HTTP/1.0 401 Unauthorized');
echo 'Auth failed';
exit;
}
可以为头('HTTP/1.0')生成任何输出;
我使用了下面的方法,并从HTTP Auth方法获得了成功的SOAP PHP身份验证响应
我的SOAP客户机语句如下所示
$client = new SoapClient("name.wsdl",array(
"trace" => 1,
"exceptions" => 0,
"login" => 'xxx',
"password" => 'xxx'));
我使用这个PHP语句来验证PHP身份验证头
if(($_SERVER['PHP_AUTH_PW']!= $pass
|| $_SERVER['PHP_AUTH_USER'] != $login)
|| !$_SERVER['PHP_AUTH_USER'])
{
header('WWW-Authenticate: Basic realm="Test auth"');
header('HTTP/1.0 401 Unauthorized');
// OR ANY THING
}
您可以使用php输入流获取que请求的原始xml,然后提取标题部分。非常感谢您的回答。我可以通过您可以使用的soap服务器中的$\u GET['']或$\u POST['']捕获用户和密码吗php://input 要获取信封的原始xml,请提取标题部分并进行验证。这样做的好处是,您可以向soap客户端发送soap异常、自定义错误响应或任何您想要报告的内容