webservice服务增加header认证
来源:互联网 发布:php new soapclient 编辑:程序博客网 时间:2024/05/20 18:46
wevservice服务没有认证不是很安全,如果是单独端口还可以加防火墙限制.
这里使用UUID+密码的MD5来传输,避免密码的泄漏,客户端发送header会调用对应方法,服务端增加是否取得认证的属性,从而判断是否用合法用户。
下面是服务端
class service{ //是否认证 private $authorized = false; //用户名 private $user = "admin"; //密码 private $pass = "admin"; //认证 function RequestSOAPHeader($header) { if ($header->username== $this->user) { if (md5($header->tid.$this->pass) == $header->password) { $this->authorized = true; } } } /* 取得位置信息 */ function test() { if (!$this->authorized) { return array('status'=>"0","data"=>"没有通过认证"); } return array('status'=>"1","data"=>"ok"); }}$server=new SoapServer(null,array('uri' => "http://www.linuxphp.org/"));$server->setClass("service");$server->handle();
下面给出客户端
//保存用户名和密码的载体class SoapUserInfo { /** 用户名 */ public $username; /** 加密的密码 */ public $password; /* 唯一UUID */ public $tid; public function __construct($u, $p) { $this->tid = $this->uuid(); $this->password = md5($this->tid.$p); $this->username = $u; } function uuid() { // version 4 UUID return sprintf( '%08x%04x%04x%02x%02x%012x', mt_rand(), mt_rand(0, 65535), bindec(substr_replace( sprintf('%016b', mt_rand(0, 65535)), '0100', 11, 4) ), bindec(substr_replace(sprintf('%08b', mt_rand(0, 255)), '01', 5, 2)), mt_rand(0, 255), mt_rand() ); }}//webservice服务地址$location = "http://www.example.com/api/soap";$soap = new SoapClient(null,array( "location" => $location, "uri" => '', "style" => SOAP_RPC, "use" => SOAP_ENCODED ));//这的RequestSOAPHeader一定要和服务端对应起来$header = new SoapHeader("http://www.linuxphp.org", 'RequestSOAPHeader' , new SoapUserInfo('admin', 'admin'));$soap->__setSoapHeaders(array($header));try { $data = $soap->test(); var_dump($data);} catch (SoapFault $e) { var_dump($e);}
- webservice服务增加header认证
- 在SOAP Header中携带认证ID的WebService实例
- CXF调用webservice 客户端 带soap header认证
- webservice认证
- header WWW-Authenticate认证
- 为ListView增加Header
- 为ListView增加Header
- nginx增加header
- webservice的header详解
- webservice(八)在web服务中加入header(基于JAXWS-RI的方法)
- 认证服务
- adb 增加认证功能
- fitnesse页面增加认证
- Telnet增加密码认证
- TYPO3 Header中增加h6
- curl_slist_append增加http header -- curl
- iOS 给collectionView增加Header
- WebService服务
- 7种形式的Android Dialog使用举例
- PowerDesigner进行CheckModel时的警告提示
- ZOJ 2527(最长等差数列)
- 经常使用的Oracle监控语句
- php中的foreach语句
- webservice服务增加header认证
- java 过滤特殊字符
- ESX
- 浏览器访问php有时候显示正常,有时候显示源码
- 编译:cc、gcc、g++、CC的区别概括
- 笔记-2007-基于有效子串标注的中文分词
- 字符串匹配算法的学习及分析
- 主从复制
- QT OpenCV 播放视频