一、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验证流程
- 终端用户请求登录RP网站,用户选择了以OpenID方式来登录
- RP将OpenId的登录界面返回给终端用户
- 终端用户以OpenID登陆RP网站
- RP网站对用户的OpenID进行标准化,此过程非常负责。由于OpenID可能是URI,也可能是XRI,所以标 准化方式各不相同。具体标准化过程是:如果OpenID以xri://、xri://$ip或者xri://$dns开头,先去掉这些符号;然后对如下的 字符串进行判断,如果第一个字符是=、@、+、$、!,则视为标准的XRI,否则视为HTTP URL(若没有http,为其增加http://)。
- RP发现OP,如果OpenId是XRI,就采用XRI解析,如果是URL,则用Yadis协议解析,若Yadis解析失败,则用Http发现。
- RP跟OP建立一个关联。两者之间可以建立一个安全通道,用于传输信息并降低交互次数。
- OP处理RP的关联请求
- RP请求OP对用户身份进行鉴权
- OP对用户鉴权,请求用户进行登录认证
- 用户登录OP
- OP将鉴权结果返回给RP
- RP对OP的结果进行分析