IT技术博客大学习 共学习 共进步

什么是OpenID?OpenID概念、原理和案例

00's UX Adventure 2010-10-19 00:29:16 浏览 5,362 次

这几周有关OpenID的新闻不断:Google Profile变身OpenID、WordPress上的Google Friend Connect插件实现OpenID留言、OpenID先驱JanRain获得325万美元风险投资雅虎将全面支持Facebook Connect服务…… 正好前段时间看了一些OpenID的资料,希望下面的内容可以帮助大家了解OpenID(参考资料见附录)。

1.OpenID介绍

1.1概念

OpenID 是一个以用户为中心的数字身份识别框架,是一个以URL为身份标识的分散式身份验证解决方案,它具有开放、分散、自由等特性。

clip_image002

OpenID 的创建基于这样一个概念:可以通过URL来认证一个网站的唯一身份,同理,也可以让每人通过一个URL(一个OpenID身份就是一个URL),在多个网站上进行登录,作为用户的身份认证。

形象一点来说:URL是护照,OpenID服务器就是户口所在地。首先在一个OpenID服务器网站注册,获得一个URL,等于申请一个了“出入许可证”。然后可以直接使用这个URL来登录别的网站,也可以把这个URL加到自己的主页,让个人主页的URL具备OpenID URL的功能,就像是一个复印件。然后就可以拿这个URL到支持OpenID的网站去登录了。不需要每个网站都注册一遍,因为你的信息已经保存在OpenID服务器上,并获得那些网站的认可。好比是银行卡可以在银联内的多家银行取钱一样。不用担心自己的用户名被别人抢注,也不用怕忘记那许多用户名和密码。

谁将拥有或控制的OpenID ?

OpenID的出现缘于开源社区,其目的是为了解决现有技术所不能轻易解决的问题。OpenID不属于任何人,也不应该属于任何人。任何人都可以选择成为一个OpenID用户或成为一个OpenID的免费提供方,而不需要注册或者被任何组织批准允许。OpenID基金会的成立,目的是为了协助开源社区的管理和发展,以促进和支持OpenID的扩展和应用 。

1.2基本原理简述

OpenID系统由三部分角色组成:

  • End User ― 终端用户,使用OpenID作为网络通行证的互联网用户;
  • Relying Part(RP) ― OpenID支持方,支持End User用OpenID登录自己的网站;
  • OpenID Provider(OP) ― OpenID提供方,提供OpenID注册、存储等服务。

clip_image009 USER ―― 使用OpenID

clip_image010 RP ―― 支持OpenID登录

clip_image012 OP ――  提供OpenID

使用 OpenID时,URL就是用户名,密码存储在一个 OpenID 服务网站(OP)上。登录RP时需要提交两个重要信息,一个是你的名字,一个是OpenID网站的网址。例如我在OP:open.cn上的账号是:kidult,我的OpenID就是http://kidult.openid.cn/。

打个比方,你到朋友公司,要经过门卫,门卫需要确认你的身份。这时候,你就是用户,门卫就是网站登录框,朋友就是一个OpenID中介。

你要进门,告诉门卫:“我要找某某某。”

门卫打电话问你朋友:“这有个人说是找你的。”

门卫把电话交给你,你给朋友暗号:“地瓜地瓜,我是土豆。”

再把电话交给门卫,朋友告诉门卫:“没错,他是我朋友,让他进来吧。”

事实上, “门卫” 并不需要认识你朋友,只需要通过一种通用的协议与OpenID的网站交换确认信息就行了,“门卫”和OpenID网站之间的信息是建立在tcp/ip基础上的比较可靠的唯一通路上,除非别人知道你的OpenID密码,或者黑客通过某种手段劫持他们之间的通信,或者劫持OpenID网站域名,否则别人不能冒充你的身份。

clip_image014

图 1 OpenID原理

1.3 OpenID优缺点

优点

对用户

1. 简化注册登录流程:一定程度上避免了重复注册、填写身份资料的繁琐过程,不需要注册邮件确认,登录更快捷。
2. 一处注册,处处通行:免去记忆大量账号的麻烦,一个OpenID就在任何支持OpenID的网站自由登录。

clip_image015

3. 减少密码泄露风险:频繁登录各种网站,容易被垃圾网站暗地里收集密码和资料,或者冒充用户身份发送垃圾信息。

4. 用户拥有账号信息控制权:根据对网站的信任程度,用户可以清楚的控制哪些profile信息可以被共享,例如姓名、地址、电话号码等。

对网站(RP)

1. 共享用户资源:给所有支持 OpenID 的网站带来了价值。

2.已经有相当数量的高端注册用户可以直接使用,不必从零开始;

3.可以不负担自己建立会员系统或登录功能所需要的开发成本、机器、带宽、安全费用;

4.用户数据是安全的,用户数据不统一存储,用户可以任意选择、更换存储的server。没有组织,没有任何一个地方可以做root,没有任何一个机构或者个人能够从这里面获利。

缺点

1. 任何人都可以建立一个网站提供OpenID验证服务,而网站性能参差不齐,导致OpenID的验证过程不是很稳定。

2. 如果提供OpenID验证服务的网站突然关闭的话,可能会导致大量用户无法使用多个网站的服务。

3. 目前几乎所有支持OpenID的网站都很谨慎地将其做为一种可供选择的辅助登录方法,这会在很大程度上阻碍OpenID的发展。

4. 目前支持OpenID的网站还不多,其独特的使用方法并不被多数用户所熟悉。

More about OpenID…

clip_image017

1.4 OpenID跟Passport的比较

网络通行证进化历程:

  • 最原始的注册方式,自选字母或是数字等组合作为ID;
  • 到了传说中的web2.0时代,用邮箱作为ID来注册,但是隐患是“不请自来”的邮件;
  • 现在,用OpenID登录,即,不用担心垃圾邮件,省去填定个人资料的过程,节省了注册时间。

目前互联网上的主流帐号管理方式有两种:

  • 单一帐号系统。只提供单一服务的网站采用的用户帐号管理模式。用户注册后使用此帐号可以在其网上上实现所有功能操作。
  • 通行证。例如google、163、微软等提供多套服务的网站采用的帐号管理程序。用户在注册一次之后,使用该帐号可以在这些网站所属群里面自由使用。

与目前流行的网站帐号系统(Passport)相比,OpenID具有开放性以及分散式的特点。它不基于某一应用网站的注册程序,而且不限制于单一网站的登录使用。

2.相关案例

目前,OpenID联盟包括的知名网站有:Google,IBM,雅虎,微软,Myspace,Facebook等。

2.1 国外OpenID

其实很多网站的账号本身就是一个OpenID:

AOL - OpenID.aol.com/screenname

Blogger - username.blogger.com

Bloglines - d.bloglines.com/username

Flickr - www.flickr.com/photos/username

LiveDoor - profile.livedoor.com/username

LiveJournal - username.livejournal.com

SmugMug - username.smugmug.com

Technorati - technorati.com/people/technorati/username

Vox - member.vox.com

Yahoo - http://OpenID.yahoo.com

WordPress.com - username.wordpress.com

Ziki.com

表 2 一些OpenID提供方比较

(易用性 安全性 用户信息 多ID管理 反钓鱼 密码保护)

clip_image023

via

Facebook 作为RP支持OpenID

2009年5月19日,facebook宣布正式启用OpenID登录系统,允许用户使用Gmail或其它支持OpenID的网站帐号登录Facebook。可以用Gmail帐号登录Facebook,也就是说,当你在Gmail里浏览邮件时,点击了一个Facebook的链接,你不需要再输入密码,就能到达你自己的Facebook页面里。

OpenID是一个非盈利性质的联盟,期望推动用一个帐号/密码来登录所有网站。这可以省掉大量的用户不停注册的时间,以及一堆帐号/密码的麻烦。

但是很多OpenID的参与者都不像Facebook这么彻底,例如不能用Facebook帐号登录Gmail。为什么Facebook这么做?Facebook说:”我们认为,开放有助于培育出一个强大的开发人员社区。”Facebook在测试中发现,利用OpenID注册Facebook的新用户”更可能”成为Facebook的活跃用户。

当然,最真实的原因来自:Facebook从一开始就是一个彻底的”开放”态度,它让用户用自己的Email地址作为Facebook的帐号,而从来没有生成Facebook自己的帐号。所以,它采纳OpenID跟自己的历史逻辑一致,没有任何损失。

2.2 Yahoo ID和Google ID

Yahoo

clip_image025

OpenID技术让你可以用Yahoo!账号登录许多网站。一旦启用您的Yahoo! OpenID的访问帐户,您可以简单地告诉任何支持OpenID的网站,你是Yahoo!用户。

当您访问的网站支持OpenID登录,您只需找到Yahoo!登录按钮。或者你看到一个OpenID图标,只需在文本框输入“yahoo.com”。登录信息将被发送到Yahoo!验证您的Yahoo! ID和密码,然后登录到该网站。

例子:用yahoo账号登录plaxo

clip_image038

安全措施:Yahoo! sign-in seal (安全图章)

clip_image040

一个安全图章是一个只在本机显示的秘密的信息或照片。每次登录都寻找它,以确保您在一个真正的雅虎正在网站。如果消息,照片,或颜色是不同的,你可能在访问一个钓鱼网站。

Google

Google期望用户用Gmail的帐号登录其他网站,比如Facebook,但是,它不允许用户用其它Facebook的帐号来登录Gmail。(例外

Google OpenID解决方案:Federated Login

基于OpenID标准。第三方网站和应用程序现在可以使用google帐户注册和登录。

clip_image051

图 2 Google Federated Login原理

(谷歌作为Relying Part)

clip_image058

为什么谷歌音乐支持人人ID、live ID、Yahoo! ID登录?有兴趣的同学可以看这里

2.3 国内类OpenID

国内支持OpenID的Relying Part:Yupoo又拍乐铺,……

国内OpenID Provider:OpenID.cn,豌豆,……

更多的是类OpenID 提供方和类OpenID Relying Part

类OpenID Relying Part:京东商城、土豆、D1、99网上书城、365商城、钻石小鸟,等等。

类OpenID Provider:支付宝、人人网、QQ等。

附:如何在我的网站上用支付宝账户登录功能?(via)

答: 1、确认您签约的合同中是否有该项服务,我们称之为“免注册登陆”、“信任登陆”等。

2、若有该项服务,且已开通该项权限功能,请从客户经理那获得,免注册登陆的接口资料。若没有,则请联系客户经理 或拨打商户客服电话0571-88158090

3、根据接口资料与接口代码DEMO,类似接入支付宝支付接口的方式,接入这个接口到商户网站中,并与商户网站里的会员数据库衔接。

具体实现步骤可参考:http://dev.alipay.com/devclub/mvnforum/viewthread_thread,398

流程 :

1、 用户在访问您的网站时,在您的登陆框里,点击功能按钮“支付宝会员登陆”

2、 通过您做好的接口与支付宝的网关,页面跳转到支付宝专门为会员免注册登陆设计的登陆页面

3、 用户填写登陆帐号密码登陆进去以后,支付宝会把这个用户的相关信息发送回本网站,同时页面跳回到本网站已设置好路径的返回页,本网站通过该返回页执行程序实现用户在本网站的自动登陆(此登陆并非登陆到支付宝网站上,而是登陆到本网站里)。

2.4 小结

封闭性质的OpenID――形似而非神似

OpenID:双向开放

  • 类OpenID:单向有选择性的开放,提供接口,通过合作或开放给用户自行添加
  • 真正的OpenID支持网站(OI):影响力太弱
  • 类OpenID Provider(OP):重量级公司,用户量庞大且较为优质,活跃度高。都不是真正的开放,自身产品不支持OpenID登录。
  • 类OpenID Relying Part(OR):实力较强,多是服务型网站,以电子商务网站为多,跟几大OP有深入的良好合作关系(互补的性质 > 竞争性质),看重的是强强联合,打通用户资源。

[1]. OpenID Wikipedia, http://en.wikipedia.org/wiki/OpenID

[2]. Six Apart - Labs: OpenID, http://www.sixapart.com/labs/OpenID/

[3]. OpenID Explained , http://OpenIDexplained.com/

[4]. OpenID百度百科, http://baike.baidu.com/view/832917.html?wtp=tt

[5]. OpenID使用手册, http://www.matrix.org.cn/resource/article/2007-09-20/187c9604-671e-11dc-91f8-0da64dffe568.html

[6]. Towards an OpenID-based solution to the Social Network Interoperability problem,Position paper for the W3C Workshop on the Futureof Social Networking

[7]. Slideshare.net Results 1-12 of 1160 for ” OpenID”  http://www.slideshare.net/search/slideshow?q=+OpenID&submit=post&searchfrom=header

[8]. 什么是OpenID , David, March 23, 2008, http://blog.iyi.cn/start/2008/03/OpenID.html

[9]. 什么是OpenID , OpenID的工作原理简述, OpenID的两种模式, http://vovo.net.cn/go/OpenID

[10]. OpenID初体验, 2008-09-10, http://www.tiray.net/post/OpenID-experience.aspx

[11]. OpenID,新的用户登录体验, http://www.adxonist.com/archives/32

[12]. OpenID的用户体验 (一), http://www.adxonist.com/archives/34

[13]. OpenID的用户体验 (二), http://www.adxonist.com/archives/39

[14]. OpenID的用户体验 (三), http://www.adxonist.com/archives/54

[15]. OpenID系列(一):注册篇, http://www.kuqin.com/shuoit/20080411/6538.html

[16]. OpenID系列(二):使用自己的URL, http://www.kuqin.com/shuoit/20080411/6539.html

[17]. 国外各大OI、OP、RP网站

[18]. 国内各大OP、RP网站

建议继续学习

  1. python实现自动登录discuz论坛 (阅读 32,662)
  2. 微信扫码登录网页实现原理 (阅读 17,264)
  3. 初探单点登录 SSO (阅读 10,502)
  4. 如何设计用户登录 (阅读 6,524)
  5. 你会做Web上的用户登录功能吗? (阅读 6,263)
  6. 如何让ssh登录更加安全 (阅读 5,604)
  7. perl的expect使用方法,实现非交互式登录。 (阅读 5,402)
  8. 互联网上的单点登录研究 (阅读 5,022)
  9. 为什么要登录? (阅读 4,962)
  10. Axure 实现网站登录的交互 (阅读 4,622)