我必须创建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的'密码')请提供。
答案 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,然后提取标题部分。