当我们想要使用网站的功能时,通常需要注册我们想要使用的帐户。所有网站都使用同一个用户名和密码,可以解决账号管理的问题,但也增加了账号密码泄露的风险。
虽然现在的网站提供短信验证码登录技术,但是今天我们要讲一个“老”技术——OpenID,看看以前的技术是如何解决密码太多不方便管理的问题的。
基本概念
在正式介绍OpenID之前,先熟悉以下基本概念。
Authentication: 身份鉴别,简称认证,简单讲就是怎么鉴定你就是某个人; Authorization Server/Identity Provider:把负责 认证的服务 称为 AuthorizationServer 或者 IdentityProvider,简称IDP; Authorisation: 资源访问,简称授权,简单讲就是给某个人赋予某些权限; Service Provider/Resource Server:把负责提供资源(API调用)的服务称为 ResourceServer 或者 ServiceProvider,简称 SP与OpenID相关的几个概念
User:网站访问者操作的浏览器 RP:Relying Party ;服务提供者,就是用户要访问的网站。 OP:OpenID Provider ;OpenID提供者,就是提供OpenID注册的服务商。OpenID简介
OpenID是由LiveJournal和six safe开发的一套认证系统。它是一个以用户为中心的数字识别框架,是开放的、分布式的、免费的。
OpenID的创建是基于这样一个概念,即我们可以通过URI认证一个网站的唯一身份(也称为网址或网址)。同样,我们也可以通过这种方式认证用户的身份。不基于申请网站的注册程序,不限于单个网站的登录和使用。OpenID账号可以在任何OpenID应用网站使用,避免了多次注册和填写身份信息的繁琐过程。简单来说,OpenID是一个以用户为中心的分布式认证系统。用户只需要注册就可以获得OpenID,然后就可以用这个OpenID账号在多个网站之间自由登录使用,而不必为每个网站注册一个账号。
OpenID的工作流程
假设你已经在网站A上注册了OpenID账号(网站A是OP角色),网站B(网站B是RP角色)支持OpenID账号登录,并且你从未登录过。这时,当你在B网站对应的登录界面输入你的OpenID账号进行登录时,浏览器会自动转到A网站的一个页面进行认证。此时,您只需输入在A网站注册时提供的密码即可登录A网站,在对B网站进行验证和管理(永久允许、只允许一次或不允许)后,页面将自动转移到B网站。如果选择允许,就登陆B网站。这时候你就可以实现B网站的所有功能作为你的OpenID账号了。
上面描述了网站B使用网站A提供的OpenID登录,你也可以使用这个OpenID登录其他支持OpenId的网站。
OpenID获取过程
首先用户选择一个OpenID 服务提供者,来注册 OpenID 帐号(跟传统的网站注册无异),注册后用户得到一个 OpenID网址(OpenID URL),如http:/collinye.openid.com ,可以简单的理解为用户名。 访问支持 OpenID 的网站,在登录时,输入你的 OpenID网址,通常此类登录页面的输入框会有如上图所示 OpenID 标志,然后点登录。 之后,会跳转你的OpenID 服务提供者的网站,并要求你输入注册时填写的密码,验证密码通过后会询问你是否允许该网站使用你的 OpenID 进行登录,经过允许后会跳转回原网站,并显示登录成功,之后你就可以以注册者的身份访问该网站。认证流程
终端用户请求登录RP网站,用户选择了以OpenID方式来登录; RP将OpenID的登录界面返回给终端用户; 用户输入OpenID,RP网站对用户的OpenID进行标准化,此过程比较复杂,因为OpenID可能是URI,也可能是XRI,所以标准化方式各不相同; RP和OP进行连接; RP请求OP对用户身份进行登录检查,OP对用户登录检查,如果用户还没有登录,请求用户进行登录认证; 用户登录OP、登录完检测RP请求哪些信息,如果没有需有用补填(OpenID主要负责认真,用户首次登陆注册可能还需要其他必要信息,可以在这个步骤补全);OPENID优缺点
优势 针对用户 简化注册登录流程:一定程度上避免了重复注册、填写身份资料的繁琐过程,不需要注册邮件确认,登录更快捷。 一处注册,处处通行:免去记忆大量账号的麻烦,一个OpenID就在任何支持OpenID的网站自由登录。劣势
任何人都可以建立一个网站提供OpenID验证服务,而网站性能参差不齐,导致OpenID的验证过程不是很稳定。 如果提供OpenID验证服务的网站突然关闭的话,可能会导致大量用户无法使用多个网站的服务。 目前几乎所有支持OpenID的网站都很谨慎地将其做为一种可供选择的辅助登录方法,这会在很大程度上阻碍OpenID的发展。 目前支持OpenID的网站还不多,其独特的使用方法并不被多数用户所熟悉。 密码安全度降低,只要OpenID的密码被泄露,基本上所有的网站都被泄露。这与”一处注册,到处使用”形成对应,即”一处泄露,到处泄露”。 OpenID并非真正的Open,很多网站表面上支持OpenID,实际上,还是不断的骚扰OpenID用户,在他们网站上注册帐号,在背后偷偷的沉淀OpenID用户。所以,就目前来说,OpenID对于集团内各子公司用户体系的打通还是可行的,对于与外部公司是否使用OpenID还得谨慎点。