Rom*_*man 6 soap zend-framework
我有一个像这样创建的肥皂服务器:
class ServerController extends Zend_Controller_Action
{
public function serverAction()
{
memcache_flush();
Zend_Registry::get('cache')->clean(Zend_Cache::CLEANING_MODE_ALL);
$server = new SoapServer("http://####/services/soap-server/wsdl");
$server->setClass('SOAP_Server_Map');
$server->handle();
}
}
Run Code Online (Sandbox Code Playgroud)
我想为它添加身份验证,以便每当有人调用" SOAP_Server_Map"中的函数时,它会检查SoapClient选项数组中提供的凭据('login'和'password')是否有效.
有没有人有任何建议/帮助?
要将身份验证添加到Zend_Soap_Server或Zend_Json_Server,只需在HTTP服务器(即:Apache)配置或.htaccess文件中指定HTTP身份验证.以下.htaccess文件应该有效:
AuthType Basic
AuthName "Supreme Data Services"
AuthUserFile /var/www/localhost/passwd
Require valid-user
Run Code Online (Sandbox Code Playgroud)
为安全起见,请确保将密码文件保留在docroot之外.可以使用Apache附带的htpasswd来创建密码文件.当然,您可以使用更高级的身份验证类型.
为了使用这些服务,您现在必须在发出请求时指定用户名和密码.如果您使用Zend Framework来创建客户端,则可以对SOAP执行以下操作:
$client = new Zend_Soap_Client($wsdl, array('login' => $username, 'password' => $password));
Run Code Online (Sandbox Code Playgroud)
以下是JSONRPC:
$http = new Zend_Http_Client();
$http->setAuth($username, $password);
$client = new Zend_Json_Client($uri, $http);
Run Code Online (Sandbox Code Playgroud)
我有完全相同的问题,我有以下想法:
我不知道 SOAP 是/应该是全状态的还是无状态的,我们是否可以打开一个会话,并且用户是否提供了某种形式的凭据,让她在一段时间内保持登录状态?
我正在考虑解决这个问题的另一种方法是通过 API 密钥,例如给出一个密钥:ABCDKEY 并将 url 设为:
http://####/services/soap-server/ABCDKEY
这引入了安全风险(魔术链接攻击),但我已经看到它在 RSS 个性化提要等中实现。有什么评论吗?
| 归档时间: |
|
| 查看次数: |
7159 次 |
| 最近记录: |