当前位置:首页>网络学院>程序开发>ASP.NET教程>文章内容

OpenId实现跨域站点整合

[ 来源:http://www.it55.com | 作者: | 时间:2007-12-24 | 收藏 | 推荐 ] 【

 一、 概述和需求... 1
  
  二、 设计分析... 2   
   
   
  一、 概述和需求
  OpenId的最重要的商业意义是让流量提供方(拥有一些固定用户的站点)、资源提供方(拥有一些个性化服务的站点)和用户(网民)三方同时受益;对于流量提供方可以有效地共享自己的流量、很容易为自己的用户提供更丰富的功能、将更多的时间用于自己的核心领域;对于资源提供方可以容易地将自己的服务提供给更多的用户、更容易创业成功;对于用户可以增加以个体为中心的体验、以及更容易地使用更多的服务。
  
  OpenId确实很适合用来进行站点间的跨域整合,但要得到无缝的集成体验,还得在设计上动动点脑筋。
  
  比如我们有需求要实现这样一个案例:
  
  站点A(流量提供方)是支持OpenId供应的站点,为了给自己的注册用户提供各种各样的服务,站点A需要集成多个独立的类似站点B支持OpenId应用的资源站点;
  
  站点B(资源提供方)是一个支持OpenId应用的服务站点,为了将自己的服务提供给更多的用户,站点B需要集成多个类似站点A支持OpenId供应的站点。
  
  我们要的效果是,站点A的注册用户登录后可以查看一个应用列表,这个列表实际上是多个类似站点B但功能各异的站点的链接,这些类似站点B的站点都是各自独立的公司在提供服务,站点A和这些资源站点在后台有合作协议,站点B可以从多个站点A得到一定的提成,站点A在前台,站点B在后台,因此站点A希望自己的用户感觉到这些站点只是自己站点的不同功能而已,感觉是不需要另外登录就可以个性化享用这些站点的服务。
  
  OpenId很适合满足这种需求,但OpenId规范并没有教我们怎么去做体验良好的集成,所以我们只得自己想一些办法来实现。
  
  本文“无缝”的意思是:用户在站点A登录后利用站点A提供的应用列表转向到站点B,用户在站点B不做任何输入操作即可实现在站点B的自动登录,这样,用户就感觉到好象是在使用一个站点的多个功能,本文把这种体验叫做无缝;反之,如果用户转向到站点B后还需要输入OpenId Url进行登录,就更容易感觉到两站的缝隙。
  
  二、 设计分析
  l 要解决的关键动作是:用户登录站点A后利用应用列表转向站点B,实现用户在站点B的自动登录,这个站A 到站 B的转向路径是我们重点讨论的问题。
  
  l 本质上,站点B必须要知道用户的OpenId Url,才能实现自动登录。当然,要传递OpenId Url给站点B是件很容易的事情,关键是怎么做才是最合理的。
  
  l 国外有人提出过给站点B的路径添加查询参数的方式来传递OpenId Url,这应该是最简单的方式,但OpenId官方不太推荐这样做,原因是站点B共享此路径后很多地方会收藏类似于http://b/?openid_%20identifier%20=xxx的路径,并且任何人都可以随意为站点路径添加这个需要检测和执行的openid_url参数,如果openid_url是非法有效的,这将导致每次转向可以消耗多个网站的资源,这跟平常人们访问一个站点的路径http://b.com/不一样,关键是平常的站点不需要对openid_url进行检测和执行;总之,采用Url查询参数方式传递openid_url可能会为互连网增加一混乱和不整洁的因素。
  
  l OpenId官方推荐的做法是,站点B利用Cookie为用户保持OpenId Url参数,当用户从站A转向站B时,站B从Cookie中取出OpenId Url,将OpenId Url填充在OpenId登录表单中,用户可以先修改也可以直接点击提交按钮,当用户清除了Cookie或初次访问站点B时,则要求用户进行输入,并且OpenId2.0规范还对提交按钮有要求,这确实是很正统的做法,但基本上不能满足我们的“无缝”集成的要求。
  
  l 综合两种意见,本文认为采用以下方式比较合理:
  
  (1)站点B为所有类似于站A的站点提供一个专门路径OpenIdXP(OpenId体验路径) 来接受跨域集成。站点A可以利用这个路径建立自己的应用列表,建立列表时将登录用户的OpenId Url添加到列表项的链连接路径中,格式例如:http://b/xxx/openidxp.aspx?openid_identifier=user_openid_identifier。站点B利用此路径页面的功能来检测和执行openid_url,站点B可以判断openid_url是否在站点B登记、是否是站点A的用户,也可以在首次转向时引导用户进行开通登记或其他必要操作,只有确定是站点A的用户才执行开通和登录。这样一来,站点B整站只有一个页面需要检测和执行openid_url参数,并且这个页面路径不象站点路径那样完全公开,而且是定向服务的,由此OpenId官方担心的问题可以降到最小化。
  
  (2)总体上站点B仍然采用OpenId官方推荐的做法来实现OpenId登录表单的功能设计。

(编辑:IT资讯之家 www.it55.com

返回顶部
 
上一篇:PSD标题图片图片矢量素材156   下一篇:没有了

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]