OpenID初体验

by Jason 2008-09-10,15:57

最近在做的一个软件项目要用到跨网站的统一用户验证功能,也就是要求在一个网站集群内,用户可以使用统一的ID和密码登录并使用网站功能。首先就想到了一度炒作得轰轰烈烈的OpenID。先来看看http://www.openid.net.cn/对OpenID的描述:
OpenID 是一个以用户为中心的数字身份识别框架,它具有开放、分散、自由等特性。
OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。由于URI 是整个网络世界的核心,它为基于URI的用户身份认证提供了广泛的、坚实的基础。
OpenID 系统的第一部分是身份验证,即如何通过 URI 来认证用户身份。目前的网站都是依靠用户名和密码来登录认证,这就意味着大家在每个网站都需要注册用户名和密码,即便你使用的是同样的密码。如果使用 OpenID (参见规范),你的网站地址(URI)就是你的用户名,而你的密码安全的存储在一个 OpenID 服务网站上(你可以自己建立一个 OpenID 服务网站,也可以选择一个可信任的 OpenID 服务网站来完成注册)。

看起来很不错,完全可以满足我的需要,于是决定先试用一下OpenID。
在网络上搜索了一番,很奇怪地发现很多技术网站和博客都曾报道过Google、Yahoo、Technorati和MySpace等网络巨头宣布支持OpenID的消息,但是在这些网站上都找不到使用OpenID登录的页面,难道说现在OpenID已经被淘汰了?这个问题还是留待以后研究吧,作为程序员,我最关心的是OpenID的实现原理。
下面看看使用OpenID的过程。
注册OpenID
提供OpeinID验证服务的网站很多,不过大部分是国外网站,国内的少之又少,试用了一番后,觉得比较稳定的是这两个:
国内 http://openid.35.com/
国外 http://www.myopenid.com/
用OpenID登录网站
国内支持OpenID的网站简直可以用“珍稀”来形容,最后找到了www.yupoo.com,一个提供网络相册的网站,似乎和BlogCN有点关系。
在yupoo的OpenID登录页面(http://www.yupoo.com/account/openid/login),用我在openid.35.com上注册的OpenID 直接登录。

 

yupoo将登陆请求转发到openid.35.com,提示我输入用户名和密码,注意这里的用户名不是OpenID,而是注册OpenID时使用的用户名。

 

openid.35.com对用户名和密码进行验证后,提示“确认OpenID验证请求”。可以看到支持OpenID的网站(如yupoo)可以选择从提供OpenID验证服务的网站(如openid.35.com)上下载用户资料,这样用户连资料都只需要填一次就可以了。

 

现在openid.35.com将用户验证结果转发到yupoo,yupoo提示“关联OpenID”,关联完成后就可以使用OpenID登录Yupoo了。

 

下面是VOVO对openid工作原理的描述,原文见http://vovo.net.cn/topic/view/131.html

假设你已经拥有一个在A网站注册获得的OpenID帐号,B网站支持 OpenID帐号登录使用,而且你从未登录过。此时你在B网站的相应登录界面输入你的OpenID帐号进行登录的时候,浏览器会自动转向A网站的某个页面进行身份验证。这时你只要输入你在A网站注册时候提供的密码登录A网站,对B网站进行验证管理(永久允许、只允许一次或者不允许)后,页面又会自动转到B 网站。如果你选择了允许,那就会登录进入B网站。(选择不允许就。。。)这个时候你就可以以你的OpenID帐户身份实现B网站的所有功能。

使用过ASP.NET的Login控件的程序员都知道这个控件有一个ReturnUrl参数,用于在用户登录后将用户转移到登录前的页面。OpenID的原理实际上也是一样,只不过是从一个网站转移到另外一个网站。至于所谓的“只需要提供OpenID,不需要密码就能登录各种网站”的功能,实际上还是使用Cookie保存用户信息,只不过这个Cookie来自提供OpenID验证的网站,而不是来自使用OpenID的网站。例如我用OpenID登录了Yupoo后,保存用户信息的Cookie是来自openid.35.com,而不是来自yupoo。
当然OpenID的实现要复杂很多,具体就不说了,可以看看OpenID发起者的网站:http://openid.net。ASP.NET程序员可以看看http://code.google.com/p/dotnetopenid/,这是一个用.NET实现OpenID技术的开放源代码项目,其中的几个示例涉及了AJAX、ASP.NET MVC等技术,是非常不错的学习材料哦。
在使用过程中觉得OpenID的最大缺陷就是由于任何人都可以建立一个网站提供OpenID验证服务,而网站性能参差不齐,导致OpenID的验证过程不是很稳定。例如我用OpenID登录yupoo时,十次有六、七次会出现验证失败的信息,这还让人怎么用啊?还有如果某个提供OpenID验证服务的网站因为各种可能的原因突然关闭的话,可能会导致大量用户无法使用多个网站的服务,openid.cn就曾出现过这种情况。目前几乎所有支持OpenID的网站都很谨慎地将OpenID做为一种可供用户选择的辅助登录方法,这应该会在很大程度上阻碍OpenID的发展。

 


对OpenID的体验使我意识到如果要实现跨网站的统一用户验证功能,一定要确保提供验证的网站稳定可靠。另外一个收获是找到了一个很不错的网络相册网站。 Laughing



第一个打分

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
标签:, ,
分类:.NET编程

评论

添加评论




biuquote
  • 评论
  • 在线预览
Loading

Powered by BlogEngine.NET 1.4.5.10 Theme by Mads Kristensen
滇ICP备06001863号

我的软件

最新评论

Comment RSS

声明

  如非特别注明,本网站发布的所有文章、源代码及软件均为原创,其版权归www.tiray.net所有。如需转载或引用,请注明出处并通知作者。
  本网站建立于中华人民共和国境内,受中华人民共和国法律法规约束。请勿在本网站发表违反国家法律法规的言论。