1. 程式人生 > 程式設計 >OAuth從1.0到2.1的發展之路

OAuth從1.0到2.1的發展之路

OAuth從1.0到2.1的發展之路

背景

2010年,OAuth 授權規範 1.0 (rfc 5849) 版本釋出,2年後,更簡單易用的 OAuth 2.0 規範釋出(rfc 6749),這也是大家最熟悉並且在網際網路上使用最廣泛的版本,在2012年的時候,iPhone 5 是全新的,微軟最新的瀏覽器還是 IE9,單頁面應用在當UihwqaNfFo時還被稱作 "Ajax 應用",CORS(跨域資源共享)還不是一個W3C標準。

到現在,網路和移動領域發生了巨大的變化,當時釋出的授權協議標準已經遠遠不能滿足現在的場景和需求,為了應對這種不斷變化的局面,OAuth 社群多年www.cppcns.com來一直在修補和擴充套件 OAuth 規範,OAuth 的格局也不斷擴大,越來越多的圍繞 OAuth 2.0 core 的擴充套件授權規範出現,也讓 OAuth 2.0 整體看起來就像一個迷宮一樣。

OAuth從1.0到2.1的發展之路

不斷進化的 OAuth 2.0

在 OAuth 2.0 核心規範 (RFC 6749)中,定義了四種授權型別:授權碼、隱式、密碼和客戶端憑據,如下:

OAuth從1.0到2.1的發展之路

相信大家都很熟悉,在 OAuth 2.0 中,最安全也是使用最普遍的就是授權碼模式,而對於本地應用,移動應用來說,通常會使用隱式和密碼授權,這兩種本身就是不安全的,因為這些屬於公開的客戶端,本身沒有能力保護客戶端機密,但是當時並沒有其它好的方案。

為了解決 OAhttp://www.cppcns.comuth 2.0 對公開客戶端的授權安全問題,PKCE (RFC 6379)協議應運而生,全稱是 Proof Key for Code Exchange,PKCE 的原理是,對於公共的客戶端,如果不能使用客戶端祕鑰(client_secret),那客戶端就提供一個自建立的證明 (code_verifier) 給授權伺服器,其中使用了加密演算法,授權伺服器通過它來驗證客戶端。

OAuth從1.0到2.1的發展之路

後來,"OAuth 2.0 for Native Apps"(RFC 8252)規範釋出,推薦原生應用也使用授權碼 + PKCE。

OAuth從1.0到2.1的發展之路

隨著技術不斷地發展,出現了裝置授權的場景,這裡裝置指智慧電視,印表機等,和傳統的PC或者手機不同,這種裝置是缺少瀏覽器或者鍵盤的,那 OAuth 2.0 常規的授權模式肯定是不能滿足的,於是就出現了裝置授權(Device Grant) 。

OAuth從1.0到2.1的發展之路

在 OAuth 2.0 安全最佳實踐(Security BCP)中,棄用了隱式和密碼授權,並且推薦所有的客戶端都應該使用 Authorization Code + PKCE 的組合。

OAuth從1.0到2.1的發展之路

最終,調整後的 OAuth 授權模式會更加精簡,轉換成下面三種,這也是 OAuth 2.1 的思想,參考安全最佳實踐(BCP),取其精華,去其糟粕。

OAuth從1.0到2.1的發展之路

總結

歸根結底,OAuth 2.1 並不是要推翻 OAuth 2.0,而是根據其安全最佳實踐(BCP),移除不安全的授權流程,並且對擴充套件協議進行整合,讓原本複雜如迷宮的 OAuth 2.0 規範成為更易用,更安全的授權規範。

OAuth從1.0到2.1的發展之路

參考資料

The OAuth 1.0 Protocol
The OAuth 2.0 Authorization Framework
The OAuth 2.1 Authorization Framework draft-ietf-oauth-v2-1-04
It's Time for OAuth 2.1
OAuth 2.0 for Native Apps
OAuth 2.0 Device Authorization Grant
Proof Key for Code Exchange by OAuth Public Clients

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。