技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 什么是OpenID?OpenID概念、原理和案例

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

浏览:4294次  出处信息

这几周有关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论坛    (阅读:31593)
  2. 微信扫码登录网页实现原理    (阅读:15630)
  3. 初探单点登录 SSO    (阅读:9333)
  4. 你会做Web上的用户登录功能吗?    (阅读:5582)
  5. 如何设计用户登录    (阅读:5517)
  6. perl的expect使用方法,实现非交互式登录。    (阅读:4499)
  7. 如何让ssh登录更加安全    (阅读:4497)
  8. 互联网上的单点登录研究    (阅读:4007)
  9. 为什么要登录?    (阅读:3937)
  10. 产品设计之QQ邮箱登录页与淘宝登录页    (阅读:3442)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1