开放授权

開放標準授權

开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth的标志
OAuth的标志

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。

OAuth是OpenID的一个补充,但是完全不同的服务。

版本与历史

 
图解开放授权

历史

OAuth开始于2006年11月,当时布莱恩·库克英语Blaine Cook (programmer)正在开发TwitterOpenID实现。与此同时,社交书签网站Ma.gnolia英语Gnolia需要一个解决方案允许使用OpenID的成员授权Dashboard访问他们的服务。这样库克、克里斯·梅西纳英语Chris Messina (open source advocate)和来自Ma.gnolia的拉里·哈尔夫(Larry Halff)与戴维·雷科尔顿英语David Recordon会面讨论在Twitter和Ma.gnolia API上使用OpenID进行委托授权。他们讨论得出结论,认为没有完成API访问委托的开放标准

2007年4月,成立了OAuth讨论组,这个由实现者组成的小组撰写了一个开放协议的提议草案。来自Google德维特·克林顿获悉OAuth项目后,表示他有兴趣支持这个工作。2007年7月,团队起草了最初的规范。随后,Eran Hammer-Lahav加入团队并协调了许多OAuth的稿件,创建了更为正式的规范。2007年10月, OAuth核心1.0最后的草案发布了。

2008年11月,在明尼阿波利斯举行的互联网工程任务组第73次会议上,举行了OAuth的BoF[1]讨论将该协议纳入IETF做进一步的规范化工作。这个会议参加的人很多,关于正式地授权在IETF设立一个OAuth工作组这一议题得到了广泛的支持。

2010年4月,OAuth 1.0协议发表为RFC 5849,一个非正式RFC

OAuth 2.0

OAuth 2.0是OAuth协议的下一版本,但不向下兼容OAuth 1.0。OAuth 2.0关注客户端开发者的简易性,同时为Web应用、桌面应用、手机和智能设备提供专门的认证流程。

Facebook的新的Graph API只支持OAuth 2.0[2],Google在2011年3月也宣布Google API对OAuth 2.0的支持[3],Windows Live也支持OAuth 2.0[4]

安全

2009年4月23日,OAuth宣告了一个1.0协议的安全漏洞。该漏洞影响了OAuth 1.0核心规范第6节的OAuth的认证流程(也称作3阶段OAuth)。[5]于是,发布了OAuth Core协议1.0a版本来解决这一问题。[6]

2014年5月,新加坡南洋理工大学一位名叫王晶(Wang Jing)的数学系博士生[7],发现了OAuthOpenID开源登录工具的"隐蔽重定向漏洞"[8]。该漏洞首先由CNET报道[9]腾讯QQ新浪微博、阿里巴巴淘宝、支付宝、搜狐网网易人人网、开心网、亚马逊、微软Live、WordPress、eBay、PayPal、脸书谷歌雅虎領英、VK.com、Mail.Ru、Odnoklassniki.ru、GitHub等大量知名网站受影响[10]。黑客可利用该漏洞给钓鱼网站“变装”,用知名大型网站链接引诱用户登录钓鱼网站,一旦用户访问钓鱼网站并成功登陆授权,黑客即可读取其在网站上存储的私密信息[11]。该问题被凤凰网[12],网易[13],搜狐[14],太平洋电脑网[15],人民网[16],CSDN[17]等大量中文网站报道。其实漏洞不是出现在OAuth这个协议本身,这个协议本身是没有问题的,之所以存在问题是因为各个厂商没有严格参照官方文档,只是实现了简版。问题的原因在于OAuth的提供方提供OAuth授权过程中没有对回调的URL进行校验,从而导致可以被赋值为非原定的回调URL,就可以导致跳转、XSS等问题,甚至在对回调URL进行了校验的情况可以被绕过[18]。目前大部分被涉及的网站都已经修复该问题。

OAuth与其他标准

 

参见

参考文献

  1. ^ Birds of a Feather,意味起始会议
  2. ^ 存档副本. [2010-07-06]. (原始内容存档于2012-08-07). 
  3. ^ Making auth easier: OAuth 2.0 for Google APIs. [2011-04-03]. (原始内容存档于2013-07-13). 
  4. ^ Windows Live - OAuth 2.0. [2011-12-23]. (原始内容存档于2017-07-11). 
  5. ^ OAuth Security Advisory: 2009.1. 2009-04-23 [2009-04-23]. (原始内容存档于2016-05-27). 
  6. ^ 存档副本. [2010-07-06]. (原始内容存档于2009-06-30). 
  7. ^ Wang Jing. [2014-11-08]. (原始内容存档于2014-11-08). 
  8. ^ Covert Redirect. Tetraph. 2014-05-01 [2014-11-08]. (原始内容存档于2014-11-08). 
  9. ^ Serious security flaw in OAuth, OpenID discovered. CNET. 2014-05-02 [2014-05-09]. (原始内容存档于2015-11-02). 
  10. ^ Covert Redirect Vulnerability Related to OAuth 2.0 and OpenID. Tetraph. 2014-05-01 [2014-11-08]. (原始内容存档于2014-10-16). 
  11. ^ 针对近期“博全球眼球OAuth漏洞”的分析与防范建议. 知道创宇. 2014-05-06 [2014-11-08]. (原始内容存档于2014-11-08). 
  12. ^ 两款互联网登录系统曝出重大漏洞短期内或无法修复. 凤凰网. 2014-05-03 [2014-11-08]. (原始内容存档于2014-11-08). 
  13. ^ OAuth与OpenID登录工具曝出重大漏洞. 网易. 2014-05-03 [2014-11-08]. (原始内容存档于2014-11-08). 
  14. ^ 两款互联网登录系统曝出重大漏洞短期内或无法修复. 搜狐. 2014-05-04 [2014-11-08]. (原始内容存档于2014-11-08). 
  15. ^ OAuth和OpenID两款登六系统再曝重大漏洞. 太平洋电脑网. 2014-05-04. (原始内容存档于2014-11-08). 
  16. ^ Oauth2.0协议曝漏洞大量社交网隐私或遭泄露. 人民网. 2014-05-04. (原始内容存档于2014-11-08). 
  17. ^ OAuth与OpenID登录工具曝出重大漏洞. CSDN. 2014-05-04 [2014-11-08]. (原始内容存档于2015-07-21). 
  18. ^ 针对近期“博全球眼球OAuth漏洞”的分析与防范建议. FreeBuf. 2014-05-07 [2014-11-08]. (原始内容存档于2018-04-11). 

外部链接