注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网络新势力

关注互联网,研究互联网,学习互联网,参与互联网——做一个互联网人

 
 
 

日志

 
 
关于我

姓名:何直群 网名:腾龙 职业:网站策划、BS程序开发(ASP\PHP) 介绍: 网站程序员(ASP & PHP)、网站构架与策划人,长期关注互联网的发展。曾就职于通信世界网(非记者)、盛大网络北京分公司、互联网观察中心、宝利亚洲。现就职与265负责网站联盟产品相关工作。曾创办过新农在线(已停)、我摘(www.wozhai.com)等网站…… ---------- 腾龙博客好友请加: QQ群:3347162 MSN群:group137861@xiaoi.com -----------

网易考拉推荐

Passport 的跨域认证解决方法探索  

2006-03-24 15:59:49|  分类: 网络技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    注意:以下为个人构思,尚未验证和分析其实际可操作性。
    今天忽然想到了“Passport”。
    普通的网站登陆,都是用户提交登陆的信息,然后由网站的程序通过数据库去验证,如果确认了,就保存一个COOKIES或者SESSION,然后用户和站点之间就可以通过SESSION来确认用户的身份了。
    而PASSPORT,就是希望用户的多个系统,使用同一套用户验证信息,就比如说,用户如果登陆了BLOG系统,然后要去访问BBS系统的时候,就不用再登陆了,直接访问就可以。
Passport最难的就是跨域认证的问题。因为如果两个系统都在同一个域名系统下(比如www.wozhai.com)那么,几个系统是可以通过访问同一个SESSION来直接知道,这个访问者的身份。
    如果是两个域名(比如www.wozhai.com 和 search.wozhia.com),两个域名之间是不能访问一个SESSION的(即使同一台服务器也不行)。因为安全的考虑,而且COOKIES也是不能互相访问的。
    看了很多资料,现在很多大的公司都使用很复杂的办法,实现了这个功能。但是作为广大的中小企业,普通爱好者,特别是我这样的程序开发的“半路出家”者。就感觉太高难了。那么是否有一个非常简单的方法实现这个功能呢?
    以下就是我的全套解决方案。非常简单。
    1、架设一个PASSPORT服务器(该服务器命名为A)。所有的用户验证都通过此服务器验证,其他服务器对用户信息的获取,用户的身份确认,都要通过这个服务器来实现。
    2、在应用服务器(该服务器命名为B)的所有需要验证的地方判断用户信息是否已经验证,如果没有验证,则通过 IFRAME 在用页面放一个A服务器的验证页面,并传递一个A可以识别的标记参数,告诉A服务器是B服务器需要验证当前用户。
    3、A服务器获得B服务器的页面请求后,首先检查当前用户是否登陆,如果没有登陆,则停止验证,或者反馈一个尚未登陆的页面。
    4、如果A用户收到B服务器的也面请求后,发现当前用户已经登陆,则生成一个随机的长的字符串并在记录下该字符串、生成时间、对应的用户记录、B服务器的标记。然后通过自动跳转技术,访问B服务器上的一个用户信息验证页面,同时传递所生成的长字符串。(该页面由A从自身记录中获取,由事先录入);
    5、B服务器的验证页面收到到所传递的长字符串后,在服务器端访问A服务器的服务器端信息确认页面,同时传递所收到的长字符串以及服务器标识。
    6、A服务器的服务器端信息确认页面收到信息后,通过字符串与发出请求的服务器来验证信息的正确性:(1)、首先判断服务器IP是否属于该PASSPORT的服务服务器列表;(2)、通过字符串查询记录中是否有该字符串;(3)通过请求服务器的IP与保留的服务器标记核对,看是否请求的IP地址是当前记录的服务器的;(4)判断字符串的生成时间与当前时间比较,是否超时,超时的设置,在A服务器上设置;(5)如果都核对无误,则返回对应的用户信息,否则反馈错误信息;
    7、B服务器受到A服务器的确认信息后,根据确认信息的内容,判断用户是否登陆成功,如果登陆成功,则给当前用户分配SESSION。如果不成功,则返回空白或者重复刚才的进程,重新验证(重新验证需要记录次数,当次数超过一定量,则无条件停止验证,避免死循环)
    PS:对于退出的管理,尚未找到一个非常好的办法。
  评论这张
 
阅读(79)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017