OpenID 是由LiveJournal和SixApart开发的一套身份验证系统。
OpenID 是一个以用户为中心的数字身份识别框架,它具有开放、分散、自由等特性。
OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。它不基于某一应用网站的注册程序,而且不限制于单一网站的登录使用。OpenID帐号可以在任何OpenID应用网站使用,从而避免了多次 注册、填写身份资料的繁琐过程。简单言之,OpenID就是一套以用户为中心的分散式身份验证系统,用户只需要注册获取OpenID之后,就可以凭借此 OpenID帐号在多个网站之间自由登录使用,而不需要每上一个网站都需要注册帐号。
网络通行证进化历程:
最原始的注册方式,自选字母或是数字等组合作为ID;
到了传说中的web2.0时代,用邮箱作为ID来注册,但是隐患是“不请自来”的邮件;
现在,用OpenID登录,即,不用担心垃圾邮件,省去填定个人资料的过程,节省了注册时间。
目前互联网上的主流帐号管理方式有两种:
单一帐号系统。只提供单一服务的网站采用的用户帐号管理模式。用户注册后使用此帐号可以在其网上上实现所有功能操作。
通行证。例如google、163、微软等提供多套服务的网站采用的帐号管理程序。用户在注册一次之后,使用该帐号可以在这些网站所属群里面自由使用。
与目前流行的网站帐号系统(Passport)相比,OpenID具有开放性以及分散式的特点。它比通行证更扩大化。它可以在任意OpenID应用网站中自由穿梭。
假设你已经拥有一个在A网站注册获得的OpenID帐号,B网站支持 OpenID帐号登录使用,而且你从未登录过。此时你在B网站的相应登录界面输入你的OpenID帐号进行登录的时候,浏览器会自动转向A网站的某个页面进行身份验证。这时你只要输入你在A网站注册时候提供的密码登录A网站,对B网站进行验证管理(永久允许、只允许一次或者不允许)后,页面又会自动转到B 网站。如果你选择了允许,那就会登录进入B网站。(选择不允许就。。。)这个时候你就可以以你的OpenID帐户身份实现B网站的所有功能。
这里描述的是简单的B-A-B的过程,实际上会是多个OpenID应用网站与你的OpenID帐号的关系。
openid工作原理
其中A过程中实现了你的身份验证以及相应个人资料的选择。也就是说你使用A网站提供的一个OpenID帐号实现了B、C、D、E、F网站的登录操作。
§ User:网站访问者操作的浏览器
§ RP:Relying Party ;服务提供者,就是用户要访问的网站。
§ OP:OpenID Provider ;OpenID提供者,就是提供OpenID注册的服务商。
1、 首先用户选择一个OpenID 服务提供者,来注册 OpenID 帐号(跟传统的网站注册无异),注册后用户得到一个 OpenID网址(OpenID URL),如http:/collinye.openid.com ,可以简单的理解为用户名。
2、 访问支持 OpenID 的网站,在登录时,输入你的 OpenID网址,通常此类登录页面的输入框会有如上图所示 OpenID 标志,然后点登录。
3、之后,会跳转你的OpenID 服务提供者的网站,并要求你输入注册时填写的密码,验证密码通过后会询问你是否允许该网站使用你的 OpenID 进行登录,经过允许后会跳转回原网站,并显示登录成功,之后你就可以以注册者的身份访问该网站。
1、终端用户请求登录RP网站,用户选择了以OpenID方式来登录
2、RP将OpenID的登录界面返回给终端用户
3、终端用户以OpenID登录RP网站
4、RP网站对用户的OpenID进行标准化,此过程非常复杂。由于OpenID可能是URI,也可能是XRI,所以标准化方式各不相同。
5、RP发现OP,如果OpenID是XRI,就采用XRI解析,如果是URL,则用Yadis协议解析,若Yadis解析失败,则用Http发现。
6、RP跟OP建立一个关联。两者之间可以建立一个安全通道,用于传输信息并降低交互次数。
7、OP处理RP的关联请求
8、RP请求OP对用户身份进行登录检查
9、OP对用户登录检查,如果用户还没有登录,请求用户进行登录认证
10、用户登录OP、登录完检测RP请求哪些信息,如果没有需有用补填。
11、OP将登录结果返回给RP
12、RP对OP的结果进行分析
13、RP分析后,如用户合法,则返回用户登录成功,可以使用RP服务
Google OpenID解决方案:Federated Login基于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的网站还不多,其独特的使用方法并不被多数用户所熟悉。
拥有了OpenID你就可以使用它到支持OpenID的各个系统去直接登录使用了,例如我注册的OpenID:https://collinye.myopenid.com/,就可以不需要输入其他帐号密码,直接使用它作为帐号就可以登录使用了。当然还有更好的方法,就是在你的网站或Blog网页上放置如下代码
<link rel=“openid.server” ref="http://www.openid.cn/openid.server”>
<link rel=“openid.delegate” href="https://collinye.myopenid.com/">
Facebook 作为RP支持OpenID
2009年5月,facebook宣布正式启用OpenID登录系统,允许用户使用Gmail或其它支持OpenID的网站帐号登录 Facebook。可以用Gmail帐号登录Facebook,也就是说,当你在Gmail里浏览邮件时,点击了一个Facebook的链接,你不需要再 输入密码,就能到达你自己的Facebook页面里。
Yahoo
OpenID技术让你可以用Yahoo!账号登录许多网站。一旦启用您的Yahoo! OpenID的访问帐户,您可以简单地告诉任何支持OpenID的网站,你是Yahoo!用户。
Google期望用户用Gmail的帐号登录其他网站,比如Facebook,但是,它不允许用户用其它Facebook的帐号来登录Gmail。(半开放)
国内支持OpenID的Relying Part:Yupoo又拍,乐铺,35.com/35.cn
国内OpenID Provider:OpenID.cn,豌豆,35.com/35.cn