文档章节

OpenID协议

柳哥
 柳哥
发布于 2015/08/06 13:47
字数 1632
阅读 393
收藏 0

也许大家都有这样的经历与烦恼:当你为了使用某个网站的服务时(若你还没有在该网站上注册过),你不得不先注册一个帐号。当你在一堆的网站上注册帐号后,你必须面临管理这些帐号的烦恼。也许你会这样考虑,不同网站注册的帐号信息都用同一个用户名与密码,这样也许会减轻你的烦恼,但是却给你带来安全隐患,一旦你的帐号在某个网站漏洞后,后果很严重。

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格式)给外部站点;

外部站点通过GETPOST方法获得用户地身份地址;

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验证服务器的间接认证回应信息。



本文转载自:

柳哥
粉丝 207
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
Keystone Google Federation With OpenID

本文是 Keystone federation identity 系列的第二篇,主要介基于 OpenID Connect 协议搭建 Keystone 和 Google 单点登录的 demo。Federation Identity 的概念、原理以及基于 SAML2 协议的文章...

koala bear
2016/02/01
0
0
OIDC–基于 OAuth2 的下一代身份认证授权协议

OIDC(OpenID Connect),下一代的身份认证授权协议;当前发布版本1.0; OIDC是基于OAuth2+OpenID整合的新的认证授权协议;OAuth2是一个授权(authorization)的开放协议, 在全世界得到广泛使用,...

monkeyk7
2016/05/18
6K
6
OpenID Connect 规范的勘误表投票通过

以下 OpenID 相关规范的勘误表获得 OpenID 基金会成员的投票通过: OpenID Connect Core 1.0 – 定义 OpenID Connect 核心功能,基于 OAuth 2.0 构建 OpenID Connect Discovery 1.0 – 定义了...

oschina
2014/11/10
2K
0
OAuth协议与OpenID协议的区别

OAuth关注的是authorization;而OpenID侧重的是authentication。从表面上看,这两个英文单词很容易混淆,但实际上,它们的含义有本质的区别: authorization: n. 授权,认可;批准,委任 au...

柳哥
2015/08/06
0
0
Community-ID 1.2.0 发布

Community-ID是一个实现了 OpenID 2.0 协议的 PHP 库。 This release added a tags field for when a bookmark is added or edited. A separate administration section was created for ad......

红薯
2009/12/15
76
0

没有更多内容

加载失败,请刷新页面

加载更多

零基础学画画应该从哪开始?

零基础学画画应该从哪开始?一种是从小有兴趣,喜欢涂鸦,喜欢将自己的创意和想法表现出来;另一种是长大后审美提高,开始对绘画艺术感兴趣,从而开始从零基础学起。 推荐大家可以搜一下:轻微...

设绘嗨
37分钟前
4
0
你编写的程序高效、优雅吗?阿里架构师教你编写高效优雅Java程序

面向对象 构造器参数太多怎么办? 用 builder 模式,用在 1、5 个或者 5 个以上的成员变量 2、参数不多,但是在未来,参数会增加 Builder 模式: 属于对象的创建模式,一般有 1. 抽象建造者:...

kx33389
42分钟前
3
0
PDF 文档操作Java类库Spire.PDF for Java v2.7.6发布上线!| 附下载

Spire.PDF for Java是一款专门对 PDF 文档进行操作的 Java 类库。该类库的主要功能在于帮助开发人员在 Java 应用程序(J2SE和J2EE)中生成 PDF 文档和操作现有 PDF 文档,并且运行环境无需安...

mnrssj
50分钟前
3
0
初探云原生应用管理(二): 为什么你必须尽快转向 Helm v3

在研究了一番“开放云原生应用中心(AppHub)”之后,程序员小张似乎已经明白了“云原生应用”到底是怎么一回事情。 “不就是 Helm 嘛!” 这不,小张这就准备把自己开发多年的“图书馆管理系...

zhaowei121
54分钟前
2
0
「工具」三分钟了解一款思维导图工具:XMind Zen

一款非常实用的商业思维导图软件,融合艺术与创造力。致力于高效的可视化思维,强调软件的跨平台使用,帮助用户提高生产效率。 相关信息 · 操作系统:macOS / Windows / Linux · 官方网站:...

极光推送
55分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部