首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中对非wsdl soap进行身份验证

如何在PHP中对非wsdl soap进行身份验证
EN

Stack Overflow用户
提问于 2015-07-31 17:17:16
回答 2查看 1.5K关注 0票数 9

我使用这种方法从服务器端获取数据到客户端。但我在验证服务器文件时遇到了问题。

在允许读取数据之前,我想检查用户名和密码。我试着用一种额外的方法,但我不起作用。

服务器

代码语言:javascript
运行
复制
class MyService
{
    public function add($x, $y)
    {
        return $x + $y;
    }
}

$options = array(
    'uri' => 'http://server/namespace',
    'location' => 'http://server/location',
);

$server = new SOAPServer(null, $options);
$server->setObject(new MyService());
$server->handle();

客户端

代码语言:javascript
运行
复制
$options = array(
    'uri' => 'http://server/namespace',
    'location' => 'http://server/location',
);
$client = new SOAPClient(null, $options);
echo $client->add(10, 10);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-04 20:08:05

如果您可以使用硬编码的用户名和密码以及HTTP基本身份验证,则可以将以下代码放在服务器文件的顶部:

代码语言:javascript
运行
复制
if (! isset($_SERVER['PHP_AUTH_USER']) ||
    $_SERVER['PHP_AUTH_USER'] !== 'foo' ||
    $_SERVER['PHP_AUTH_PW'] !== 'bar') { 
  header('WWW-Authenticate: Basic realm="My service"');
  header('HTTP/1.1 401 Unauthorized');
  echo 'Unauthorized';
  exit;
} 

这将检查HTTP身份验证数据是否存在,如果不存在,将向客户端发送HTTP 401错误。如果存在身份验证数据,则将根据硬编码用户名foo和密码栏对其进行验证。

为了从客户端脚本中传递用户名/密码,请按以下方式调整客户机中的$options

代码语言:javascript
运行
复制
$options = array(
  'uri' => 'http://server/namespace',
  'location' => 'http://server/location',
  'login' => 'foo',     // username
  'password' => 'bar'   // password
);
$client = new SOAPClient(null, $options);

请注意,HTTP基本身份验证是最简单的设置,但用户名和密码将以准纯文本形式传输到服务器。因此,至少应该对服务端点使用SSL,以便对所有通信进行加密。

HTTP摘要身份验证更安全,因为它只发送凭据的散列,但它需要更多的工作来设置。一个很好的起点是the HTTP authentication page in the PHP manual

为了验证服务器端接收到的用户名/密码数据,您还可能希望使用具有有效用户名/密码/登录令牌的数据库,而不是使用示例中的硬编码凭据。

票数 6
EN

Stack Overflow用户

发布于 2015-08-03 10:49:33

为什么不将username+pass作为soap中的一个参数发送。在服务器端,您应该有一个基本对象,它具有所有的身份验证逻辑,并让"MyService“继承它。基对象将始终处理请求,如果它通过身份验证,则将详细信息传递给MyService。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31751719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档