标签:
也许大家都有这样的经历与烦恼:当你为了使用某个网站的服务时(若你还没有在该网站上注册过),你不得不先注册一个帐号。当你在一堆的网站上注册帐号后,你必须面临管理这些帐号的烦恼。也许你会这样考虑,不同网站注册的帐号信息都用同一个用户名与密码,这样也许会减轻你的烦恼,但是却给你带来安全隐患,一旦你的帐号在某个网站漏洞后,后果很严重。
OpenID就是基于解决这类问题而提出的一个国际标准,用于打通各大网站之间的用户体系。你可以使用某一网站的帐号去登录另一网站,只要这些网站都是实现了OpenID的服务。目前,google,yahoo,flickr等都支持OpenID服务。2009年2月初,facebook也宣布加入OpenId基金会。
OpenID简介
OpenID官方网站 http://openid.net 。官方首页介绍说:OpenID是一个单一的免费的数字身份标识。使用它,你就可以登录你经常登录的网站。
OpenID提高了互联网服务的用户体验。显而易见,就终端用户而言,OpenID降低了用户管理多个网站帐号的烦恼,用户可以享受类似单点登录的体验。对于企业来说,OpenID降低了用户帐号管理的成本。对于应用开发者来说,OpenID是一个开放的,去中心化的,免费的,以用户为中心的身份标识体系。OpenID的优势是:一处注册,到处使用。
OpenID是一个以用户为中心的数字身份识别框架。它具有开放,分散,自由等特性。OpenID的创建是基于这样一个概念:我们可以通过URI(或者URL)来识别一个网站。同样,我们也可以通过这样的方式来识别一个用户的身份。OpenID系统的身份认证就是通过URI来认证用户身份。目前绝大部分网站都是通过用户名与密码来登录认证用户身份,这就要求大家在每个你要使用的网站上注册一个帐号。如果使用OpenID,你可以在一个提供OpenID的网站上注册一个OpenID。之后你可以使用这个OpenID去登录支持OpenID的网站。这正是一处注册,到处使用的体现。
OpenID常见的应用场景:某用户试图登录一个外部网站。与提交用户名和密码的方式不同,他只提交了属于自己的一个URL,例如:http://johnsmith.example.com/ 。这个URL即指向用户的OpenID认证服务器,同时又是用户的身份标识。因此外部网站使用此URL便可以找到用户的认证服务器,并询问认证服务器:“该用户声称他拥有此URL。而这个URL说明了你负责认证工作,那么请告诉我,该用户能否访问我的站点?”。 认证服务器将提示用户登入认证系统,并询问用户是否允许和外部网站进行认证。如果用户同意的话,那么认证服务器将通知外部网站——用户已经通过认证。在上面,我们通过拟人化的表达方式形象生动地诠释了整个认证请求/响应过程。
基本工作流程
上面的图表展示了OpenID2.0的基本工作流程。它展示了在终端用户(End User),外部站点(Relying Party是个示例站点)和OpenID验证服务器(OpenID Provider)之间的交互过程(最常见的认证流程)。
用户登入外部站点的过程主要分为以下六个步骤:
1. 用户提供一个身份地址(以URL格式)给外部站点;
外部站点通过GET和POST方法获得用户地身份地址;
2. 外部站点通过身份地址取得OpenID验证服务器地址;
一般情况下就是用户输入地URL地址;
3. 外部站点与OpenID验证服务器进行关联(可选);
为了能够与OpenID验证服务器安全的通信,外部站点需要向OpenID验证服务器请求一个协议。如果有现成的可以使用的协议,则用现有的协议,否则,通过Diffie Hellman的方法获得一个共享密匙。被标为“可选的”,这是因为OpenID协议还允许外部站点直接请求认证(不作关联)、并且接着请求对认证信息进行验证。这样外部站点可以不保有关联权柄信息,以实现无状态通讯。而这种方式被推荐用于执行与OpenID服务器之间的相关通讯,但如果不能使用此方式的话,就必须创建上面讲的关联方式。
4. 外部站点将用户重定向到OpenID验证服务器;
OpenID验证服务器接受一个包含所有外部站点需要用来验证用户的信息,如果用户已经登陆(有COOKIE)并且他已经同意发送他的身份信息给应用服务器的话,第5步可以跳过;
请注意: 外部站点并没有直接发送HTTP请求到OpenID认证服务器,而是重定向到OpenID认证服务器页面。由于这样使得OpenID认证服务器能够从用户浏览器中读取cookie而没有将任何认证细节泄露给外部站点,因此这个过程是安全的。
5. OpenID验证服务器回应外部站点地认证请求;
OpenID验证服务器通过COOKIE或用户输入用户名+密码验证用户是否登录。登录后判断是否允许外部站点的认证请求,如已配置过则直接返回认证响应信息;如果没有配置过则显示判断页面,在页面上显示外部站点的资料和用户自己的身份资源,让用户选择是否允许响应外部站点的请求,以及用那种身份来响应,最后返回用户选择的认证响应信息;
6. OpenID验证服务器重定向外部站点;
外部站点验证发自OpenID验证服务器的间接认证回应信息。
标签:
原文地址:http://my.oschina.net/fhd/blog/488603