4

我必须创建 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 SERVER)端捕获并验证这些用户名和密码。这是我的 SOAP 服务器代码

class getDb {
//return DATA 
}

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

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

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

4

4 回答 4

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');

于 2012-11-30T09:44:11.107 回答
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 基本身份验证来处理身份验证请求并拥有肥皂服务只是处理实际工作。

于 2012-11-30T07:52:03.093 回答
1

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

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

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

我使用这个 PHP 语句来验证 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
}
于 2012-12-07T14:51:11.883 回答
0

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

于 2014-01-03T23:38:00.833 回答