Logo 开放平台实验室 | Open Platform Lab

六/08

22

OpenID综述

OpenID 是什么?

从用户的角度看,它是一个URL。例如:http://liuqingyan.yahoo.cn (假如yahoo.cn提供OpenID服务的话)。这个URL就是我的ID,使用这个ID我就可以登录任何一个支持OpenID的互联网应用(例如应用网站——新浪、网易、facebook,甚至网络游戏等)、享受他们的服务而无需在他们的网站上各自注册。

从产品的角度看, 它是一种身份认证服务。提供这种服务的网站叫做OpenID服务提供者(或者叫做OpenID IdP——身份提供者。我没有用提供商这个词,因为OpenID是自由、免费的),例如上面的yahoo.cn。用户只需在yahoo.cn注册和管理一 套统一的帐号、密码、profile(通过OpenID框架定义的属性交换协议)便可以一个ID走遍全球网站而无需分别注册了(假如大家都支持OpenID的话)。

从技术的角度看,它是一个统一的用户注册、认证协议框架,是一套开放接口(API)的标准是一个去中心化的单点登录系统的设计规范

它的特点:
开放——它的协议、API是开放和免费的,任何人均可自由实现;
分散——它的服务是分布式的,任何一个人都可以选择成为消费者或者身份提供者而不需要去登记或者被一个中央当局批准,最终用户可以选择他们喜欢的身份提供者并且可以任意地在不同的提供者之间移动切换;
自由——它按照最大自由方式授权,使用它不需要任何费用任何注册或者许可证。

现今,较知名的OpenID服务的英文提供者有openid.net, myopenid.com等,中文提供者有openid.org.cn, openid.cn, mysecond.name等。

目前支持或者已经准备支持OpenID登录的公司有:Yahoo!, flickr, Microsoft, Google, AOL, LiveJounal(blog service provider), Technorati(blog tagging服务), Orange(移动运营商), IBM, Verisign(网络安全服务提供商), Facebook, Plaxo(一个做在线地址簿的公司), 等等。(参考:《雅虎测试支持OpenID 方便用户登陆不同网站》《传闻谷歌IBM和Verisign拟加入OpenID》)根据OpenID中文博客上面的这篇文章介绍,著名的开源博客平台wordpress或者movable type都可以通过插件支持OpenID发表评论。

OpenID最终赢得了Webware 2007年最佳互联网应用TOP100中Browsing类别奖项获得者。这里是Webware的评价的一段摘录:

In theory, if OpenID was adopted on every Web site around the Web, you’d need only one universal log-in and could forgo the often tedious practice of remembering user names and passwords.

也就是说,如果大家最终都能以开放的心态来统一和融合,那么最终我们这些互联网用户将可以一个帐号通全球。

————–

下面简要介绍一下OpenID的技术流程。我们可以和Email认证来对比,以帮助我们理解。

现在很多大家熟知的应用网站,例如Facebook等,都是用Email帐号注册,然后它通过发送Email的方式来认证这确实是你的Email。本质上,雅虎的帐号也全部都是Email帐号。车东在他的blog上贴了一篇帖子《Plaxo:Email是人与人之间的URL》,这个帖子有点絮叨,不利于理解本文,还是不要阅读为好。

Email认证的流程可以简单描述如下:

(1) 注册:

a. 用户提交注册信息给Email服务提供商(eg. yahoo) 。

b. 用户得到Email帐号(eg. test@yahoo.cn)。

(2) 认证(指用户使用上述Email去注册facebook等应用网站时,应用网站认证用户email的流程):

a. 用户提交Email帐号(eg. test@yahoo.cn)和登录密码(注:也有的应用网站是先随机生成密码,然后认证通过后你再自己修改密码)给应用网站(eg. facebook)。

b. 应用网站(eg. facebook)发送认证Email给Email服务提供商(eg. yahoo) 。

c. Email服务提供商(eg. yahoo) 呈现认证信息(通常是一个附有参数的链接,直接点击即可)给用户。

d. 用户点击链接,认证信息传回应用网站(eg. facebook),认证成功。

(3) 登录:

a. 用户提交Email帐号和登录密码(注意不是Email密码)给应用网站(eg. facebook)

b. 应用网站(eg. facebook)到自己的数据库中校验帐号密码。若一致,登录成功。

Email认证的缺点:

1. 注册认证过程繁琐。

2. 仅注册时和Email服务提供商进行身份认证。以后每次登陆都不再和Email服务提供商重新认证身份。如果你的Email服务提供商处出现Email帐号过期又被他人重新申请的情况,你将可能面临隐私泄漏的风险。

3. 应用网站(eg. facebook)的登录帐号是Email,但是登录密码却是另外一个密码。如果为每一个应用网站都设置不同的密码,将会有很大的记忆负担。

4. 而如果你把所有的密码都设置成和Email密码一样,那么风险更大。因为应用网站(eg. facebook)的登录密码是存储在它们自己的服务器上的,无法保证应用网站(eg. facebook)不会窃取或泄漏你的密码(如果你的密码恰好和Email密码一样的话,这意味着不诚信的应用网站可以侵入你的Email,进而获取你更 多的资料。同时,有些应用网站,例如facebook,会让你输入你的Email和密码;如果有黑客伪造这样的网页,可以骗取大量的Email帐号密码; 进而侵入Email,如果你的Email中有邮件恰好保存了信用卡帐号密码和CVV2码,那么你的金融安全将面临巨大风险!)

5. 认证信件在网络上明文传输,可能会被窃取。

6. 存在隐私泄漏,收到垃圾邮件的危险(特别是无良的应用网站公开出卖用户资料)。

好,那么我们再来看看OpenID认证的流程

(1) 注册:

a. 用户提交注册信息给OpenID服务提供者(eg. yahoo) 。

b. 用户得到OpenID帐号(一个URL,eg. http://test.yahoo.cn)。

(2) 登录(是的,相比Email认证,OpenID免去了重新认证的过程):

a. 用户提交OpenID帐号给应用网站(eg. facebook)。

b. 应用网站(eg. facebook)通过OpenID规范中的“自动发现协议”确定OpenID的服务提供者。

c. 应用网站(eg. facebook)返回一个认证请求给用户浏览器,并让用户浏览器重定向到OpenID服务提供者。

d. OpenID服务提供者验证用户身份后(注:该验证使用何种方式不包含在OpenID规范中),返回认证通过的信息给用户浏览器,并让浏览器重定向回应用网站(eg. facebook)。

e. 应用网站(eg. facebook)接收到认证通过信息,允许用户登入。登录完成。

Email认证的几个问题在OpenID中都可以得到解决:

1. 节省了在应用网站(eg. facebook)上的重新注册和认证的步骤。

2. 每次登录应用网站(eg. facebook),都会通过OpenID服务提供者来进行身份认证。

3. 用户无需为不同的应用网站(eg. facebook)、OpenID设置不同的密码。

4. 用户的密码存储在可信赖的OpenID服务提供者处(每个人可以选择自己可信赖的OpenID服务提供者,甚至,如果你谁都信不过,你可以自己搭建一个 OpenID服务,自己给自己提供服务),确保了应用网站(eg. facebook)无法获知你的密码,从而避免了密码的泄漏。

5. 认证过程全部采用加密算法,并对各种攻击进行了充分考虑,确保已知的黑客技术无法在合理时间将其攻破。

6. OpenID不要求你提供email,因此你不用担心受到垃圾邮件的骚扰。

综上,从技术的角度而言,OpenID提供了一种开放、免费、安全、分布式的统一用户身份认证解决方案,如果能够得到广 泛运用,将从注册角度打破目前各网站割裂的局面,真正体现了互联网“互联互通”的精神,极大方便用户对互联网的使用。(可能公司对统一身份认证还好接受, 对共享用户profile估计接受起来难度会大很多)

当然,这一切理想的实现都需要我们大家以一种开放的心态去参与!可喜的是,世界著名的大型互联网企业包括老牌IT企业都 已经开始认识到了这一点。同时我们也可以看出,国内的互联网界还鲜有有影响力的企业认识、接受和参与到其中,开放、互通、融合的心态还需要一段时间来建 立。

————————–

一些FAQ。

Q: 我可以拥有多个OpenID吗?
A: 当然可以!随你喜欢,你可以注册一个http://liuqingyan.yahoo.cn,再注册一个http://liuqingyan.google.com, etc。但是如果世界上所有网站都统一了用户认证,你有必要注册两个ID吗?——除非你想隐藏真实身份。

Q: OpenID是安全的吗?
A: 是的。你可以自由选择你信任的OpenID服务提供者。OpenID的协议规范是公开的,这样确保了它可以最大程度的安全。因为公开的规范是面对全世界的检验,因此它从设计之初就必须考虑最大的安全性(即,从数学和理论计算机科学上证明其不可破解)。

同时,应用网站(eg. facebook)将不再能够存储你的ID和密码,从而杜绝了应用网站泄露你的密码的可能性。也杜绝了黑客伪造应用网站骗取你的密码的可能性。

最后,OpenID是分布式(分散)的,这意味着没有任何一个霸权可以控制它,进而控制所有的用户。

Q: OpenID是方便的吗?
A: 当然。一次注册,全球浏览,还有比这更方便的吗?

Q: 如果我的OpenID服务提供者挂掉了怎么办?
A: 是个好问题,也是个技术性比较强的问题。简单的说,OpenID服务是分布式的(可以有很多服务提供者),挂了一个两个不会有任何影响。而且,你可以选择比较稳定的服务提供者(eg. yahoo, google, etc)。

从技术角度进行严谨的解释,根据OpenID规范中对于自动发现协议的阐述,允许用户通过多种可配置的协议来进行服务发现,也就是说,用户可以方便的更换OpenID服务提供者来对自己进行身份认证而不会有丝毫问题。

Q: OpenID这个天才的主意是谁想出来的呀?
A: Brad Fitzpatrick。他是Danga Interactive公司的创始人,该公司开发和维护着世界知名博客服务网站http://www.livejournal.com。另外,他还开发了世界应用最广泛的开源分布式高速缓存系统memcached(中国雅虎的全能搜索后端缓存技术就是memcached),分布式文件系统mogileFS等等。而OpenID则是他2006年左右(具体时间不详)发明的一种去中心化的单点登录系统

Q: 既然OpenID这么好,下一阶段它面临哪些困难呢?
A: 我认为主要是如何说服如此多的应用网站去建立开放心态,加入OpenID框架。

Q: 我开了一个很棒的图书分享网站,并决定加入OpenID框架了,我该怎么做呢?
A: 非常简单。plaxo有一个很好的guide,可以先看看。interwingly有一篇写得不错的博客《OpenID for non-superusers》,详细解释了一些高级的使用方法。然后细节的地方,参考OpenID的规范就可以了。

Q: 我对这篇综述有意见或者建议。
A: 请联系我:刘青焱 qingyan.liu (at) yahoo.com.cn 。

No tags

No comments yet.

Leave a Reply

<<

Theme Design by devolux.nh2.me