Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php从SOAP服务器获取SOAP头用户名和密码_Php_Soap_Soap Client_Nusoap - Fatal编程技术网

php从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

我必须创建PHP,SOAP API。我需要从SOAP服务器验证SOAP客户端。 这是SOAP客户端的代码

 $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异常、自定义错误响应或任何您想要报告的内容