OAuth從1.0到2.1的發(fā)展之路
背景
2010年, OAuth 授權規(guī)范 1.0 (rfc 5849) 版本發(fā)布, 2年后, 更簡單易用的 OAuth 2.0 規(guī)范發(fā)布(rfc 6749), 這也是大家最熟悉并且在互聯(lián)網(wǎng)上使用最廣泛的版本, 在2012年的時候, iPhone 5 是全新的, 微軟最新的瀏覽器還是 IE9, 單頁面應用在當時還被稱作 "Ajax 應用", CORS(跨域資源共享)還不是一個W3C標準。
到現(xiàn)在, 網(wǎng)絡和移動領域發(fā)生了巨大的變化, 當時發(fā)布的授權協(xié)議標準已經(jīng)遠遠不能滿足現(xiàn)在的場景和需求, 為了應對這種不斷變化的局面, OAuth 社區(qū)多年來一直在修補和擴展 OAuth 規(guī)范, OAuth 的格局也不斷擴大, 越來越多的圍繞 OAuth 2.0 core 的擴展授權規(guī)范出現(xiàn), 也讓 OAuth 2.0 整體看起來就像一個迷宮一樣。
不斷進化的 OAuth 2.0
在 OAuth 2.0 核心規(guī)范 (RFC 6749)中, 定義了四種授權類型:授權碼、隱式、密碼和客戶端憑據(jù), 如下:
相信大家都很熟悉, 在 OAuth 2.0 中,最安全也是使用最普遍的就是授權碼模式, 而對于本地應用,移動應用來說, 通常會使用隱式和密碼授權, 這兩種本身就是不安全的, 因為這些屬于公開的客戶端, 本身沒有能力保護客戶端機密, 但是當時并沒有其它好的方案。
為了解決 OAuth 2.0 對公開客戶端的授權安全問題, PKCE (RFC 6379)協(xié)議應運而生, 全稱是 Proof Key for Code Exchange,PKCE 的原理是, 對于公共的客戶端, 如果不能使用客戶端秘鑰(client_secret), 那客戶端就提供一個自創(chuàng)建的證明 (code_verifier) 給授權服務器,其中使用了加密算法, 授權服務器通過它來驗證客戶端。
后來,"OAuth 2.0 for Native Apps"(RFC 8252)規(guī)范發(fā)布,推薦原生應用也使用授權碼 + PKCE。
隨著技術不斷地發(fā)展, 出現(xiàn)了設備授權的場景, 這里設備指智能電視,打印機等, 和傳統(tǒng)的PC或者手機不同, 這種設備是缺少瀏覽器或者鍵盤的,那 OAuth 2.0 常規(guī)的授權模式肯定是不能滿足的, 于是就出現(xiàn)了設備授權(Device Grant) 。
在 OAuth 2.0 安全最佳實踐(Security BCP)中, 棄用了隱式和密碼授權,并且推薦所有的客戶端都應該使用 Authorization Code + PKCE 的組合。
最終, 調(diào)整后的 OAuth 授權模式會更加精簡, 轉換成下面三種, 這也是 OAuth 2.1 的思想, 參考安全最佳實踐(BCP),取其精華, 去其糟粕。
總結
歸根結底, OAuth 2.1 并不是要推翻 OAuth 2.0,而是根據(jù)其安全最佳實踐(BCP), 移除不安全的授權流程, 并且對擴展協(xié)議進行整合, 讓原本復雜如迷宮的 OAuth 2.0 規(guī)范成為更易用,更安全的授權規(guī)范。
參考資料
The OAuth 1.0 Protocol
The OAuth 2.0 Authorization Framework
The OAuth 2.1 Authorization Framework draft-ietf-oauth-v2-1-04
OAuth 2.0 for Native Apps
OAuth 2.0 Device Authorization Grant
Proof Key for Code Exchange by OAuth Public Clients
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Selenium實現(xiàn)微博自動化運營之關注、點贊、評論功能
這篇文章主要介紹了Selenium實現(xiàn)微博自動化運營:關注、點贊、評論,本文通過實例代碼圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02Hadoop-3.1.2完全分布式環(huán)境搭建過程圖文詳解(Windows 10)
這篇文章主要介紹了Hadoop-3.1.2完全分布式環(huán)境搭建過程圖文詳解(Windows 10),本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07基于 Dubbo Admin 動態(tài)調(diào)整服務超時時間的操作步驟
Dubbo提供動態(tài)調(diào)整超時時間的服務治理能力,可以在無需重啟應用的情況下,動態(tài)調(diào)整服務超時時間,這篇文章主要介紹了基于 Dubbo Admin 動態(tài)調(diào)整服務超時時間,需要的朋友可以參考下2022-12-12詳解git submodule update獲取不到最新提交的代碼
這篇文章主要介紹了詳解git submodule update獲取不到最新提交的代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08DedeCMS 5.7 sp1遠程文件包含漏洞(CVE-2015-4553)
這篇文章主要介紹了DedeCMS 5.7 sp1遠程文件包含漏洞(CVE-2015-4553)的相關知識,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08比較經(jīng)典技術普及帖 以你剛才在淘寶上買了一件東西
你發(fā)現(xiàn)快要過年了,于是想給你的女朋友買一件毛衣,你打開了taobao。這時你的瀏覽器首先查詢DNS服務器,將taobao轉換成ip地址2012-06-06