OpenID

✍ dations ◷ 2025-11-29 15:58:03 #自2010年5月包含空白章节的条目,认证方法,网络安全

OpenID是一个去中心化的网上身份认证系统。对于支持OpenID的网站,用户不需要记住像用户名和密码这样的传统验证标记。取而代之的是,他们只需要预先在一个作为OpenID身份提供者(identity provider, IdP)的网站上注册。OpenID是去中心化的,任何网站都可以使用OpenID来作为用户登录的一种方式,任何网站也都可以作为OpenID身份提供者。OpenID既解决了问题而又不需要依赖于中心性的网站来确认数字身份。

OpenID最初由LiveJournal的Brad Fitzpatrick开发,后来加入了Light-Weight Identity,Yadis,Sxip DIX protocol和XRI/i-names。未来的OpenID规范正在由OpenID.net开发,很多技术公司、服务公司和开源开发者都参与其中。

为了推动OpenID的应用,2006年8月,一些公司赞助设立了OpenID奖励计划,对前10位满足要求的软件项目各奖励5000美元。

2007年12月5日,OpenID验证规范9.0和属性交换规范9.0发布。

OpenID相关基本术语:

最终用户(End User)

标识(Identifier)

身份提供者(Identity Provider, IdP)

依赖方(Relying Party, RP)

一个想要为其访问者提供OpenID登录网站,比如example.com,需要在页面的某个地方放置一个登录表单。与提示用户输入用户名和密码的传统登录表单不同的是,这种表单只有一个输入框:OpenID标识。网站可以选择在这个输入框旁显示一个小的OpenID图标。这个表单与OpenID客户端库的实现相连接。

假设用户Alice在身份提供者openid-provider.org处注册了一个OpenID标识:alice.openid-provider.org。如果Alice想使用这个标识来登录example.com,她只需要到example.com去将alice.openid-provider.org填入OpenID登录表单。

如果标识是一个URL,依赖方example.com做的第一件事情是将这个URL转换为典型格式:http://alice.openid-provider.org/。在OpenID 1.0中,依赖方接着请求该URL对应的网页,然后通过一个HTML链接tag发现提供者服务器,比如http://openid-provider.org/openid-auth.php。同时也确定是否应该使用授权身份(delegated identity)。从OpenID 2.0开始,依赖方请求的是XRDS文档(也称为Yadis文档),使用内容类型application/xrds+xml。这种类型在URL中可能存在,而在XRI中总是存在。

依赖方可以通过两种模式来与身份提供者通信:

第二种模式更加常用。而且,如果操作不能够自动进行的话,checkid_immediate模式会转换为checkid_setup模式。

首先,依赖方与身份提供者创建一个“共享秘密”——一个联系句柄,然后依赖方存储它。如果使用checkid_setup模式,依赖方将用户的网页浏览器重定向到提供者。在这个例子里,Alice的浏览器被重定向到openid-provider.org,这样Alice能够向提供者验证自己。

验证的方法可能不同,但典型地,OpenID提供者要求提供密码(然后可能使用cookies存储用户会话,就像很多基于密码验证的网站的做法一样)。如果Alice当前没有登录到openid-provider.org,她可能被提示输入密码,然后被问到是否信任依赖方页面——如http://example.com/openid-return.php,这个页面被example.com指定为用户验证完成后返回的页面——获取她的身份信息。如果她给出肯定回答,OpenID验证被认为是成功的,浏览器被重定向到被信任的返回页面。如果Alice给出否定回答,浏览器仍然会被重定向,然而,依赖方被告知它的请求被拒绝,所以example.com也依此拒绝Alice的登录。

但是,登录的过程还没有结束,因为在这个阶段,example.com不能够确定收到的信息是否来自于openid-provider.org。如果他们之前创建了“共享秘密”,依赖方就可以用它来验证收到的信息。这样一个依赖方被称为是stateful的,因为它存储了会话间的“共享秘密”。作为对比,stateless的验证方必须再作一次背景请求(check_authentication)来确保数据的确来自openid-provider.org。

Alice的标识被验证之后,她被看作以alice.openid-provider.org登录到example.com。接着,这个站点可以保存这次会话,或者,如果这是她的第一次登录,提示她输入一些专门针对example.com的信息,以完成注册。

OpenID不提供它自己的验证方式,但是如果身份提供者使用强验证,OpenID可被用于安全事务,比如银行和电子商务。

OpenID正在被越来越多的大网站采用。Yahoo!已经支持OpenID。所有有Yahoo账户的用户可以通过OpenID directed identity方式登录支持OpenID信赖方网站。 

Google 曾经支持OpenID 2.0,不过自 2015 年 4 月 20 日起,Google 账户将不再使用 OpenID,转而使用OpenID Connect。

Orange、AOL与Yahoo!都已经支持OpenID。AOL提供每个AOL或AIM的用户一组OpenID Identity,目前还在测试阶段,为openid.aol.com/username

目前使用OpenID代替一般账号密码的网站包括了 著名的开源社区SourceForge、LiveJournal、Zooomr、Wikitravel、ma.gnolia.com、claimid.com以及Jyte。

在openid.net上有一份公开的服务器列表,可以让一般人申请OpenID Identity。

2014年5月,新加坡南洋理工大学一位名叫王晶(Wang Jing)的物理和数学科学学院博士生,发现了OAuth和OpenID开源登录工具的"隐蔽重定向漏洞"。

其实漏洞不是出现在OpenID这个协议本身,这个协议本身是没有问题的,之所以存在问题是因为各个厂商没有严格引用官方文档,只是实现了简版。问题的原因在于OpenID的提供方提供OpenID授权过程中没有对回调的URL进行校验,从而导致可以被赋值为非原定的回调URL。

相关

  • 衣原体肺炎衣原体门(学名:Chlamydiae)是一门细菌。它们的生长完全在其它生物的细胞内进行,是专性寄生菌。衣原体原先多被归入衣原体属(Chlamydia),随着分子生物学发展,目前根据系统发育树分
  • 奴隶制奴隶制度是古希腊发展史的一个重要组成部分。大部分古代作家认为奴隶制不仅是必需的而且自然合理,无论斯多葛派还是早期基督教都没有质疑过这种行为。然而早在公元前4世纪,一
  • 塞内加尔华人,在塞内加尔人口虽少但正不断增长,主要是由20世纪80年代抵达的中华人民共和国移民组成。在八十年代起,中华人民共和国移民开始诠进入塞内加尔。塞内加尔总统阿布杜·迪乌夫
  • 文化人类学体质人类学 文化人类学 语言人类学 分子人类学 社会人类学 考古学应用人类学 民族志 参与观察 文化相对论文化 • 社会 史前史 • 人类演化 亲属 婚姻 • 家庭 物质文化 种
  • 奥地利国会联邦大会(德语:Bundesversammlung (Österreich))(两会联合召开)244政治主题奥地利议会(德语:Österreichisches Parlament)是奥地利共和国的立法机关,由两院组成,分别为国民议会(下议
  • 火麻火麻(英语:),古中国称汉麻、枲麻(拼音:xǐ,注音:ㄒㄧˇ)、苴麻(拼音:jū,注音:ㄐㄩ),通称大麻,俗称麻,是大麻(学名:)的变种之一,源产于中国。该变种目前商业种植的品种都是THC含量<0.3%的一种经济
  • 金刚山 (朝鲜)坐标:38°39′24″N 128°06′18″E / 38.65667°N 128.10500°E / 38.65667; 128.10500金刚山(朝鲜语:금강산/金剛山)是位于朝鲜民主主义人民共和国江原道的山峰,主峰海拔1,638米
  • 大同话大同话指的是通行于山西省大同市境内的方言。语言学分类一般归为晋语大包片,大同话属于雁北方言,因此与官话极为相近。大同话共有24个声母(包括零声母)大同话共有38个韵母
  • 阿马尔菲公国阿马尔菲公国(意大利语:Ducato di Amalfi),或阿马尔菲共和国(意大利语:Repubblica di Amalfi)是一个曾在10世纪至11世纪实际上存在于意大利南部的以阿马尔菲为中心的独立国家。阿马
  • 裕馨龄裕馨龄(1886年-1932年),汉军正白旗人。清朝末年官员,1905年4月至1911年10月任自强学堂提调。出生于湖北武昌,在兄妹五人中排行第四,在荆州、沙市长大。