淺談OAuth 2.0 的一個簡單解釋
這個標準比較抽象,使用了很多術語,初學者不容易理解。其實說起來并不復雜,下面我就通過一個簡單的類比,幫助大家輕松理解,OAuth 2.0 到底是什么。
一、快遞員問題
我住在一個大型的居民小區(qū)。

小區(qū)有門禁系統(tǒng)。

進入的時候需要輸入密碼。

我經常網(wǎng)購和外賣,每天都有快遞員來送貨。我必須找到一個辦法,讓快遞員通過門禁系統(tǒng),進入小區(qū)。

如果我把自己的密碼,告訴快遞員,他就擁有了與我同樣的權限,這樣好像不太合適。萬一我想取消他進入小區(qū)的權力,也很麻煩,我自己的密碼也得跟著改了,還得通知其他的快遞員。
有沒有一種辦法,讓快遞員能夠自由進入小區(qū),又不必知道小區(qū)居民的密碼,而且他的唯一權限就是送貨,其他需要密碼的場合,他都沒有權限?
二、授權機制的設計
于是,我設計了一套授權機制。
第一步,門禁系統(tǒng)的密碼輸入器下面,增加一個按鈕,叫做"獲取授權"??爝f員需要首先按這個按鈕,去申請授權。
第二步,他按下按鈕以后,屋主(也就是我)的手機就會跳出對話框:有人正在要求授權。系統(tǒng)還會顯示該快遞員的姓名、工號和所屬的快遞公司。
我確認請求屬實,就點擊按鈕,告訴門禁系統(tǒng),我同意給予他進入小區(qū)的授權。
第三步,門禁系統(tǒng)得到我的確認以后,向快遞員顯示一個進入小區(qū)的令牌(access token)。令牌就是類似密碼的一串數(shù)字,只在短期內(比如七天)有效。
第四步,快遞員向門禁系統(tǒng)輸入令牌,進入小區(qū)。
有人可能會問,為什么不是遠程為快遞員開門,而要為他單獨生成一個令牌?這是因為快遞員可能每天都會來送貨,第二天他還可以復用這個令牌。另外,有的小區(qū)有多重門禁,快遞員可以使用同一個令牌通過它們。
三、互聯(lián)網(wǎng)場景
我們把上面的例子搬到互聯(lián)網(wǎng),就是 OAuth 的設計了。
首先,居民小區(qū)就是儲存用戶數(shù)據(jù)的網(wǎng)絡服務。比如,微信儲存了我的好友信息,獲取這些信息,就必須經過微信的"門禁系統(tǒng)"。
其次,快遞員(或者說快遞公司)就是第三方應用,想要穿過門禁系統(tǒng),進入小區(qū)。
最后,我就是用戶本人,同意授權第三方應用進入小區(qū),獲取我的數(shù)據(jù)。
簡單說,OAuth 就是一種授權機制。數(shù)據(jù)的所有者告訴系統(tǒng),同意授權第三方應用進入系統(tǒng),獲取這些數(shù)據(jù)。系統(tǒng)從而產生一個短期的進入令牌(token),用來代替密碼,供第三方應用使用。
四、令牌與密碼
令牌(token)與密碼(password)的作用是一樣的,都可以進入系統(tǒng),但是有三點差異。
(1)令牌是短期的,到期會自動失效,用戶自己無法修改。密碼一般長期有效,用戶不修改,就不會發(fā)生變化。
(2)令牌可以被數(shù)據(jù)所有者撤銷,會立即失效。以上例而言,屋主可以隨時取消快遞員的令牌。密碼一般不允許被他人撤銷。
(3)令牌有權限范圍(scope),比如只能進小區(qū)的二號門。對于網(wǎng)絡服務來說,只讀令牌就比讀寫令牌更安全。密碼一般是完整權限。
上面這些設計,保證了令牌既可以讓第三方應用獲得權限,同時又隨時可控,不會危及系統(tǒng)安全。這就是 OAuth 2.0 的優(yōu)點。
注意,只要知道了令牌,就能進入系統(tǒng)。系統(tǒng)一般不會再次確認身份,所以令牌必須保密,泄漏令牌與泄漏密碼的后果是一樣的。 這也是為什么令牌的有效期,一般都設置得很短的原因。
OAuth 2.0 對于如何頒發(fā)令牌的細節(jié),規(guī)定得非常詳細。具體來說,一共分成四種授權類型(authorization grant),即四種頒發(fā)令牌的方式,適用于不同的互聯(lián)網(wǎng)場景。下一篇文章,我就來介紹這四種類型,并給出代碼實例。
到此這篇關于淺談OAuth 2.0 的一個簡單解釋的文章就介紹到這了,更多相關OAuth 2.0內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
thymeleaf實現(xiàn)th:each雙重多重嵌套功能
今天給大家分享一個使用 thymeleaf 實現(xiàn)一個動態(tài)加載一二級文章分類的功能,本文通過代碼講解的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2019-11-11
字符編碼詳解及由來(UNICODE,UTF-8,GBK) 比較詳細
很久很久以前,有一群人,他們決定用8個可以開合的晶體管來組合成不同的狀態(tài),以表示世界上的萬物。他們看到8個開關狀態(tài)是好的,于是他們把這稱為字節(jié)2012-04-04
HTTP提交方式之PUT詳細介紹及POST和PUT的區(qū)別
這篇文章主要介紹了HTTP提交方式之PUT詳細介紹及POST和PUT的區(qū)別,本文簡潔易懂,需要的朋友可以參考下2014-07-07
Archlinux?Timeshift系統(tǒng)備份與還原的操作方法
這篇文章主要介紹了Archlinux?Timeshift系統(tǒng)備份與還原的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
chatgpt成功解決Access denied 1020錯誤問題(最新推薦)
從前兩天網(wǎng)上開始一直開著的chatgpt網(wǎng)頁突然打不開了,提示1020錯誤,嘗試換了不同代理軟件或者代理地點仍然無法解決,這篇文章主要介紹了chatgpt成功解決Access denied 1020錯誤,需要的朋友可以參考下2023-05-05
大數(shù)據(jù)就業(yè)的三大方向和最熱門十大崗位【推薦】
這篇文章主要介紹了大數(shù)據(jù)就業(yè)的三大方向和最熱門十大崗位,需要的朋友可以參考下2019-06-06

