这几周有关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注册、存储等服务。

USER —— 使用OpenID

RP —— 支持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管理 反钓鱼 密码保护)

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

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

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

例子:用yahoo账号登录plaxo

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

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

Google

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

Google OpenID解决方案:Federated Login

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

图 2 Google Federated Login原理

(谷歌作为Relying Part)

为什么谷歌音乐支持人人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网站

什么是OpenID?OpenID概念、原理和案例相关推荐

  1. SQL注入基础原理与案例(详细总结)

    SQL注入基础原理与案例 一.前言 二.漏洞概述及危害 1.漏洞概述 2.漏洞危害 3.漏洞防范 三.SQL注入 1.SQL注入方式 (1)信息收集 (2)数据注入 (3)高权限注入 2.判断是否存在 ...

  2. 大型网站技术架构:核心原理与案例分析pdf

    下载地址:网盘下载 编辑推荐 编辑 本书作者是阿里巴巴网站构建的亲历者,拥有核心技术部门的一线工作经验,直接体验了大型网站构建与发展过程中的种种生与死,蜕与变,见证了一个网站架构从幼稚走向成熟稳定的历 ...

  3. 图解通信原理与案例分析-19:3G CDMA码分多址通信技术原理---码分多址、OVSF正交扩频码、伪随机码序列

    前言导读: 码分多址(CDMA)是第三代移动通信的核心技术,其基本思想是在相同的载波频段上,通过的不同的地址码来区分的不同用户.不同基站的数据. 3G CDMA与2G GSM通信相比,主要网络架构与通 ...

  4. Python大数据综合应用 :零基础入门机器学习、深度学习算法原理与案例

    机器学习.深度学习算法原理与案例实现暨Python大数据综合应用高级研修班 一.课程简介 课程强调动手操作:内容以代码落地为主,以理论讲解为根,以公式推导为辅.共4天8节,讲解机器学习和深度学习的模型 ...

  5. oracle物理备份与恢复,Oracle 备份与恢复概念原理学习

    梳理下oracle中备份与恢复的概念原理--[@more@] 一.备份与恢复分逻辑和物理备份与恢复. 二.逻辑类:命令有EXP和IMP. 三.物理类:Noarchivelog和archivelog模式 ...

  6. 大型网站技术架构:核心原理与案例分析阅读笔记二

    大型网站技术架构:核心原理与案例分析阅读笔记二 网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变 ...

  7. Database之SQLSever:T-SQL数据语言操作(数据定义语句DDL、数据操作语句DML、数据控制语句DCL、其他基本语句、流程控制语句、批处理语句)概念及其相关案例之详细攻略

    Database之SQLSever:T-SQL数据语言操作(数据定义语句DDL.数据操作语句DML.数据控制语句DCL.其他基本语句.流程控制语句.批处理语句)概念及其相关案例之详细攻略 目录 T-S ...

  8. Database之SQLSever:SQL命令实现理解索引、规则、默认概念及其相关案例之详细攻略

    Database之SQLSever:SQL命令实现理解索引.规则.默认概念及其相关案例之详细攻略 目录 SQL命令实现理解索引.规则.默认概念 索引 规则

  9. DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介、原理、案例应用(相关配图)之详细攻略

    DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介.原理.案例应用(相关配图)之详细攻略 目录 Perceptron的简介.原理 多层感知机 实现代码 案例 ...

最新文章

  1. Spring JDBC-Spring对事务管理的支持
  2. 详解C与C++的联系与区别
  3. Warning:java: 来自注释处理程序 'org.antlr.v4.runtime.misc.NullUsageProcessor' 的受支持 source 版本 'RELEASE_6' 低于
  4. C# 4.0 的 Visual Studio 2010 官方示例
  5. 让你瘦不停的23个小细节 - 生活至上,美容至尚!
  6. 五分钟快速过完Verilog HDL基本概念(1)
  7. java中根号2怎么表示_根号2的计算方法(Java实现)
  8. Cisco Live 2016:CEO罗卓克谈英国脱欧、内部孵化以及向服务转型
  9. 阿里云上的Docker容器镜像仓库
  10. linux scp 自动备份,linux Oracle 自动备份并scp
  11. char char* 的困惑
  12. SHT2x系列数字温湿度传感器
  13. EVE模拟器关联CRT与Wireshark
  14. 把kali装到U盘里
  15. WerFault.exe 占用CPU 100%的问题处理
  16. WC .exe C语言实现
  17. 有关面试八股文的一些难点
  18. 这段python代码虐待我无数,求解答
  19. html段落布局,如何使用WPS2012中的“段落布局”详细图文介绍
  20. 两种降压型DC-DC变换器的工作原理

热门文章

  1. infiniband rmmod: ERROR: Module xxxx is in use by:yyyyy
  2. 汇编实验5 DOS、BIOS调用
  3. Java 提供给第三方使用接口方法
  4. IEEE论文免费下载
  5. 关于集合除法的理解(MySQL实现)
  6. 台式机是计算机进入睡眠状态,HP电脑显示器即将进入睡眠状态
  7. 将图片做成gif动态图
  8. IP广播无法登陆服务器系统,数字IP广播系统操作指南
  9. orale数据库的SQL查询
  10. Windows Server 远程桌面 SSL/TLS 漏洞修复