什么是OpenID?OpenID概念、原理和案例
这几周有关OpenID的新闻不断:Google Profile变身OpenID、WordPress上的Google Friend Connect插件实现OpenID留言、OpenID先驱JanRain获得325万美元风险投资、雅虎将全面支持Facebook Connect服务…… 正好前段时间看了一些OpenID的资料,希望下面的内容可以帮助大家了解OpenID(参考资料见附录)。
1.OpenID介绍
1.1概念
OpenID 是一个以用户为中心的数字身份识别框架,是一个以URL为身份标识的分散式身份验证解决方案,它具有开放、分散、自由等特性。
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注册、存储等服务。
OP ―― 提供OpenID
使用 OpenID时,URL就是用户名,密码存储在一个 OpenID 服务网站(OP)上。登录RP时需要提交两个重要信息,一个是你的名字,一个是OpenID网站的网址。例如我在OP:open.cn上的账号是:kidult,我的OpenID就是http://kidult.openid.cn/。
打个比方,你到朋友公司,要经过门卫,门卫需要确认你的身份。这时候,你就是用户,门卫就是网站登录框,朋友就是一个OpenID中介。
你要进门,告诉门卫:“我要找某某某。”
门卫打电话问你朋友:“这有个人说是找你的。”
门卫把电话交给你,你给朋友暗号:“地瓜地瓜,我是土豆。”
再把电话交给门卫,朋友告诉门卫:“没错,他是我朋友,让他进来吧。”
事实上, “门卫” 并不需要认识你朋友,只需要通过一种通用的协议与OpenID的网站交换确认信息就行了,“门卫”和OpenID网站之间的信息是建立在tcp/ip基础上的比较可靠的唯一通路上,除非别人知道你的OpenID密码,或者黑客通过某种手段劫持他们之间的通信,或者劫持OpenID网站域名,否则别人不能冒充你的身份。
图 1 OpenID原理
1.3 OpenID优缺点
优点:
对用户
1. 简化注册登录流程:一定程度上避免了重复注册、填写身份资料的繁琐过程,不需要注册邮件确认,登录更快捷。
2. 一处注册,处处通行:免去记忆大量账号的麻烦,一个OpenID就在任何支持OpenID的网站自由登录。
3. 减少密码泄露风险:频繁登录各种网站,容易被垃圾网站暗地里收集密码和资料,或者冒充用户身份发送垃圾信息。
4. 用户拥有账号信息控制权:根据对网站的信任程度,用户可以清楚的控制哪些profile信息可以被共享,例如姓名、地址、电话号码等。
对网站(RP)
1. 共享用户资源:给所有支持 OpenID 的网站带来了价值。
2.已经有相当数量的高端注册用户可以直接使用,不必从零开始;
3.可以不负担自己建立会员系统或登录功能所需要的开发成本、机器、带宽、安全费用;
4.用户数据是安全的,用户数据不统一存储,用户可以任意选择、更换存储的server。没有组织,没有任何一个地方可以做root,没有任何一个机构或者个人能够从这里面获利。
缺点:
1. 任何人都可以建立一个网站提供OpenID验证服务,而网站性能参差不齐,导致OpenID的验证过程不是很稳定。
2. 如果提供OpenID验证服务的网站突然关闭的话,可能会导致大量用户无法使用多个网站的服务。
3. 目前几乎所有支持OpenID的网站都很谨慎地将其做为一种可供选择的辅助登录方法,这会在很大程度上阻碍OpenID的发展。
4. 目前支持OpenID的网站还不多,其独特的使用方法并不被多数用户所熟悉。
More about OpenID…
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管理 反钓鱼 密码保护)
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
OpenID技术让你可以用Yahoo!账号登录许多网站。一旦启用您的Yahoo! OpenID的访问帐户,您可以简单地告诉任何支持OpenID的网站,你是Yahoo!用户。
当您访问的网站支持OpenID登录,您只需找到Yahoo!登录按钮。或者你看到一个OpenID图标,只需在文本框输入“yahoo.com”。登录信息将被发送到Yahoo!验证您的Yahoo! ID和密码,然后登录到该网站。
例子:用yahoo账号登录plaxo
安全措施:Yahoo! sign-in seal (安全图章)
一个安全图章是一个只在本机显示的秘密的信息或照片。每次登录都寻找它,以确保您在一个真正的雅虎正在网站。如果消息,照片,或颜色是不同的,你可能在访问一个钓鱼网站。
Google期望用户用Gmail的帐号登录其他网站,比如Facebook,但是,它不允许用户用其它Facebook的帐号来登录Gmail。(例外)
Google OpenID解决方案:Federated Login
基于OpenID标准。第三方网站和应用程序现在可以使用google帐户注册和登录。
图 2 Google Federated Login原理
为什么谷歌音乐支持人人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网站
建议继续学习:
- python实现自动登录discuz论坛 (阅读:31589)
- 微信扫码登录网页实现原理 (阅读:15619)
- 初探单点登录 SSO (阅读:9321)
- 你会做Web上的用户登录功能吗? (阅读:5580)
- 如何设计用户登录 (阅读:5509)
- perl的expect使用方法,实现非交互式登录。 (阅读:4494)
- 如何让ssh登录更加安全 (阅读:4492)
- 互联网上的单点登录研究 (阅读:4003)
- 为什么要登录? (阅读:3929)
- 产品设计之QQ邮箱登录页与淘宝登录页 (阅读:3437)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:00 来源: 00's UX Adventure
- 标签: OpenID 登录
- 发布时间:2010-10-19 00:29:16
- [56] Oracle MTS模式下 进程地址与会话信
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [53] Go Reflect 性能
- [53] android 开发入门
- [50] 【社会化设计】自我(self)部分――欢迎区
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [39] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑