PHP单点登录的简单实现以及webserver的简单使用.docx

PHP单点登录的简单实现以及webserver的简单使用.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP单点登录的简单实现以及webserver的简单使用PHP单点登录的简单实现以及webserver的简单使用说明:自己学习的一些记录和备忘,有什么问题还请指正简单实现三个站点的单点登录,在一个站点登录,其他站点自动登录,一个站点退出,其他站点同时退出假设有三个站点siteA 域名为sitea.xxxsiteB 域名为siteb.xxxsiteC 域名为sitec.xxxsiteC提供统一登录认证服务要实现单点登录要满足如下的条件:站点SESSION的共享,不管用户数据库是否是单独的,SESSION一定要是公共的。(这里用memcached解决共享SESSION的问题)所有站点能共享一个登录凭证。(对php程序来说,SESSION ID 是最简单的方法了)所以,只要能把siteA的session id 传递给 siteB等其他站点就好办了,我们可以使用jsonp或者隐藏的iframe达到这个目的首先在sitec上建立webserver服务端,(其他方式的登录认证API接口都可以)soap_server.php第一步,开启session,保存到memcache;第二步,建立webserver,建议使用PHP自带的soap扩展.默认soap的扩展是没有加载的,所以你可能需要检查php.ini是否打开了如果不知道什么是soap,{点击这里}.soap扩展我们主要使用三个类:soapSever,soapCilent和soapFault;SoapServer用于创建php服务器端页面时定义可被调用的函数,方法,对象,类及返回响应数据。SoapClient用于调用远程服务器上的SoapServer页面,并实现了对相应函数的调用。SoapFault用于生成soap访问过程中可能出现的错误。Soap服务有两种模式:WSDL模式:需要手动创建一个WSDL文件.如果各个站点是不同的语言写的,比如有的用java,有的用PHP,那么用wsdl吧,接口也一目了然{使用方法}Non-WSDL模式:如果所有站点都是PHP的,这种方法简单省事,效率也要高一点。这里使用Non-WSDL的模式ini_set('session.save_handler', 'memcache');ini_set('session.save_path', ':11211');session_start();//开启webserver,启动登录和认证服务require_once 'Authorize.class.php';$options = array( 'location' => 'http://sitec.xxx/soap_server.php', 'uri' => 'soap_server.php');//无wsdl模式$wsdl = null; $soap = new SoapServer($wsdl, $options);$soap->setClass("Authorize");$soap->handle();Authorize.class.php你的webserver类class Authorize { const KEY ="a*v%^*(OH"; //ticket加密解密的密钥/** * login 登录服务并返回多点登录的ticket * @param type $username 用户登录名或者id * @param type $password 登录密码 * @param type $login_site 来源的站点(为防止加密解密失败,约定为 xxxx.xx(如:abc.xxx) 格式,自行处理) * @param type $ip 登录用户客户端IP * @return array 返回数组,error=>错误信息,'sessid'=>session id,'sso_script'=>多点登录接口脚本,ticket=>多点登录凭证*/ public function login($username = '', $password = '', $login_site = '', $ip = '') { if ($login_site == '' || $username == '' || $password == '') { return array();}//分配并获取session_id(); $sid = session_id();//返回值结构 $result = array( 'error'=>'', //错误信息 'sessid' => $sid, //session id"sso_script"=> 'http://sitec.xxx/sso.php?ticket=', //多点登录的脚本地址'ticket'=>'');//连接数据库,可能

您可能关注的文档

文档评论(0)

moon8888 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档