本頁使用了標題或全文手工轉換

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德維特·柯林頓(DeWitt Clinton)獲悉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開源登入工具的"隱蔽重新導向漏洞"(Covert Redirect[8]。該漏洞首先由CNET報導[9]。騰訊QQ、新浪微博、阿里巴巴淘寶、支付寶、搜狐網、網易、人人網、開心網、亞馬遜、微軟Live、WordPress、eBay、PayPal、Facebook、Google、Yahoo、LinkedIn、VK.com、Mail.Ru、Odnoklassniki.ru、GitHub等大量知名網站受影響[10]。駭客可利用該漏洞給釣魚網站「變裝」,用知名大型網站連結引誘用戶登入釣魚網站,一旦用戶存取釣魚網站並成功登陸授權,駭客即可讀取其在網站上儲存的私密資訊[11]。該問題被鳳凰網[12],網易[13],搜狐[14],太平洋電腦網[15],人民網[16],CSDN[17]等大量中文網站報導。其實漏洞不是出現在OAuth這個協定本身,這個協定本身是沒有問題的,之所以存在問題是因為各個廠商沒有嚴格參照官方文件,只是實現了簡版。問題的原因在於OAuth的提供方提供OAuth授權過程中沒有對回呼的URL進行校驗,從而導致可以被賦值為非原定的回呼URL,就可以導致跳轉、XSS等問題,甚至在對回呼URL進行了校驗的情況可以被繞過[18]。目前大部分被涉及的網站都已經修復該問題。

參見[編輯]

參考文獻[編輯]

外部連結[編輯]