php从SOAP SERVER获取SOAP标头用户名和密码

时间:2012-11-30 06:01:52

标签: php soap soap-client nusoap

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

 $client = new SoapClient("cust.wsdl",array(
"trace"      => 1,
"exceptions" => 0,
"user" => 'username',
"pass" => 'password'));

$result = $client->getDetails($value1);

我需要从服务器(SOAP SERVER)端捕获并验证这些用户名和密码。 这是我的SOAP服务器代码

class getDb {
//return DATA 
}

$server = new SoapServer("cust.wsdl");
$server->setClass("getDb");
$server->handle();

我需要从SOAP服务器验证客户端的用户名和密码。

任何人都知道如何捕获SOAP用户名和密码(“user”=>'username', “pass”=>来自SOAPSERVER的'密码')请提供。

4 个答案:

答案 0 :(得分:4)

可以如下捕获身份验证详细信息。

    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;
}

可以为header('HTTP/1.0 401 Unauthorized');

生成任何输出

答案 1 :(得分:2)

$client = new SoapClient("cust.wsdl",array(
    "trace"      => 1,
    "exceptions" => 0,
    **"user" => 'username',
    "pass" => 'password'));**

上述2项通常是http auth用户名和密码。如果您需要验证它们,那么您可以在apache基本身份验证级别上执行此操作。如果你需要在php级别进行,那么你需要编写一个基于http auth的会话处理程序,它需要安全性才能显示资源。这方面的一个例子是:http://php.net/manual/en/features.http-auth.php大多数开发人员只使用绑定到LDAP或其他服务的apache基本身份验证来处理身份验证请求,并让soap服务只处理实际工作。

答案 2 :(得分:1)

我使用了以下方法,并从HTTP Auth方法获得了成功的SOAP PHP身份验证响应。

我的SOAP客户端语句看起来像

$client = new SoapClient("name.wsdl",array(
"trace"      => 1,
"exceptions" => 0,
"login" => 'xxx',
"password" => 'xxx'));

我将此PHP语句用于Authenticate PHP 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');
        // OR ANY THING
}

答案 3 :(得分:0)

您可以使用php输入流来获取que请求的原始xml,然后提取标题部分。