1.基于概念

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

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

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

2.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的结果进行分析

最新文章

  1. Delphi_OD_代码_调试_Delphi反调试技术(以OD为例附核心原代码) (转)
  2. C#的contextMenuStrip右键没反应的可能原因
  3. JS引用另外JS文件的顺序问题。
  4. Oracle sqlldr导入导出txt数据文件详解
  5. Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
  6. iOS开发——动画编程Swift篇&(四)CABasicAnimation动画
  7. 第六篇:python高级之网络编程
  8. ZOJ3516 (图的遍历)
  9. eclipse - tomcat 远程调试
  10. js-ES6学习笔记-Set结构和Map结构
  11. IsKeyboardFocused -- 键盘焦点
  12. 详解apply
  13. asp.net core 同时添加Identity和Bearer认证
  14. 「2017 山东一轮集训 Day7」逆序对
  15. WebKit最新特性srcset简介(转)
  16. [转]xargs详解
  17. lucene删除索引——(五)
  18. const对象,指向const对象的指针 和 const 指针
  19. 在Linux Bash通过上下键快速查找历史命令
  20. 时间序列深度学习:seq2seq 模型预测太阳黑子

热门文章

  1. 有未经处理的异常: 0xC00000FD: Stack overflow
  2. Cisco 3702i TX功率图
  3. ES2.3.5版本的数据类型
  4. Fiddler一次性发多个请求
  5. python输出颜色与样式的方法
  6. css不起作用报错:Resource interpreted as Stylesheet but transferred with MIME type text/html
  7. String类为什么是不可变的
  8. 树形下拉框ztree、获取ztree所有父节点,ztree的相关方法
  9. app生命周期之即将关闭
  10. 关于java自学的内容及感受