OpenID

OpenId是一个以用户为中心的数字身份识别框架,它具有开放、分散、自由等特性。OpenId的创建是基于这样一个概念:我们可以通过URI(或者URL网址)来识别一个网站。同样,我们也可以通过这样的方式来识别一个用户的身份。OpenId系统的身份认证就是通过URI来认证用户身份。目前绝大部分网站都是通过用户名与密码来登录认证用户身份,这就要求大家在每个你要使用的网站上注册一个帐号。如果使用OpenId,你可以在一个提供OpenId的网站上注册一个OpenId,以后你可以使用这个OpenId去登录支持OpenId的网站。这正是一处注册,到处使用的体现。

登录一个支持 OpenID 的网站非常简单(即便你是第一次访问这个网站也是一样)。只需要输入你注册好的 OpenID 用户名,然后你登录的网站会跳转到你的 OpenID 服务网站,在你的 OpenID 服务网站输入密码(或者其它需要填写的信息)验证通过后,你会回到登录的网站并且已经成功登录。 OpenID 系统可以应用于所有需要身份验证的地方,既可以应用于单点登录系统,也可以用于共享敏感数据时的身份认证。

除了一处注册到处通行以外,OpenID 给所有支持 OpenID 的网站带来了价值--共享用户资源。用户可以清楚的控制哪些信息可以被共享,例如姓名、地址、电话号码等。今天,OpenID 作为以用户为中心的身份验证系统已经为数百万的用户提供了服务。

二、OpenID相关术语

  • End User:终端用户,使用OP与RP的服务
  • Relying Party依赖方:简称RP,服务提供者,需要OP鉴权终端用户的身份
  • OpenID Provider:OpenID提供者,简称OP,对用户身份鉴权
  • Identifier标识符:标识符可以是一个HTTP、HTTPS或者XRI(可扩展的资源标识)
  • User-Agent:实现了HTTP1.1协议的用户浏览器
  • OP Endpoint URL:OP鉴权的URL,提供给RP使用
  • OP Identifier:OP提供给终端用户的一个URI或者XRI,RP根据OP Identifier来解析出OP Endpoint URL与OP Version
  • User-Supplied Identifier:终端用户使用的ID,可能是OP提供的OpenID,也可以是在RP注册的ID。RP可以根据User-Supplied Identifier来解析出OP Endpoint URL、OP Version与OP_Local Identifer
  • Claimed Identifier:终端用户声明自己身份的一个标志,可以是一个URI或者XRI
  • OP-Local Identifier:OP提供的局部ID

三、OpenID验证流程

  1. 终端用户请求登录RP网站,用户选择了以OpenID方式来登录
  2. RP将OpenId的登录界面返回给终端用户
  3. 终端用户以OpenID登陆RP网站
  4. RP网站对用户的OpenID进行标准化,此过程非常负责。由于OpenID可能是URI,也可能是XRI,所以标准化方式各不相同。具体标准化过程是:如果OpenID以xri://、xri://$ip或者xri://$dns开头,先去掉这些符号;然后对如下的字符串进行判断,如果第一个字符是=、@、+、$、!,则视为标准的XRI,否则视为HTTP URL(若没有http,为其增加http://)。
  5. RP发现OP,如果OpenId是XRI,就采用XRI解析,如果是URL,则用Yadis协议解析,若Yadis解析失败,则用Http发现。
  6. RP跟OP建立一个关联。两者之间可以建立一个安全通道,用于传输信息并降低交互次数。
  7. OP处理RP的关联请求
  8. RP请求OP对用户身份进行鉴权
  9. OP对用户鉴权,请求用户进行登录认证
  10. 用户登录OP
  11. OP将鉴权结果返回给RP
  12. RP对OP的结果进行分析
posted @ 2018-05-28 17:52  努力的喵喵喵  阅读(3204)  评论(0编辑  收藏  举报