OAuth協議簡介
OAuth協議簡介
背景
在傳統模式下,用戶的客戶端在訪問某個web服務提供的具有一定訪問限制的資源時,需要提供用于進行身份認證的憑證(credential),例如密碼,accesskey等。如果存在第三方的應用需要該web服務上用戶的資源,用戶必須將自己的憑證共享給第三方應用,這種實踐帶來了一些問題:
第三方應用需要存放用戶的憑證,且必須拿到明文(例如使用用戶名和密碼遠程調用web服務的API),如果第三方應用被攻擊,用戶的憑證可能被泄露。
無法限制第三方應用的權限。第三方應用拿到用戶憑證明文后,等于拿到了用戶的所有權限,且用戶無法對第三方應用在什么時間訪問哪些資源進行限制,可能被越權。
用戶無法回收對某個第三方應用的授權,除非更改密碼。更改密碼可能導致依賴該密碼的其他第三方應用無法訪問。
用戶資源的安全性取決于安全性最弱的第三方應用(木桶理論),任何一個第三方應用被攻擊,都可能導致用戶的身份憑證泄露,以及存放在web服務上的資源被攻擊。
基本原理
OAuth是一種授權協議,允許用戶在不將賬號口令泄露給第三方應用的前提下,使第三方應用可以獲得用戶在某個web服務上存放資源的訪問權限。
例如下圖,通過華為賬號登錄騰訊新聞應用時,并不需要將賬號口令提供給騰訊新聞應用,用戶只要擁有華為賬號,只需要輕輕點擊一下授權就可以無縫訪問,在保證安全和隱私的同時帶來體驗上質的飛躍,體驗提升的持續追求使得OAuth協議在互聯網得到了非常廣泛的應用。
OAuth通過引入authorization server的概念,并對授權訪問過程中的幾個參與方進行重新定義和角色解耦。
上面是一個非常非常抽象的流程圖,僅僅為了厘清OAuth交互過程中存在哪些角色及承擔的職責,實際上具體應用過程中的差異非常大。從上圖大概可以看出,OAuth協議交互過程中存在四種角色:
resource owner
需要訪問資源的主體,可以是人,也可以是物,指代人的時候就是我們通常說的end-user。
resource server
存放受保護資源的web服務,接收資源的訪問請求并響應,resource server對請求進行鑒權。例如用戶存放照片的華為終端云服務。
client
用來代理resource owner請求資源的應用程序,client訪問資源需要得到resource owner的授權。例如照片美圖APP,需要拉取用戶存放在云服務上的照片。
authorization server
對resource owner進行身份認證和鑒權,并頒發訪問憑證。例如華為賬號認證服務。
其他說明
OAuth協議當前已經發展到2.0版本。1.0版本已經廢棄,且OAuth2.0并不能后向兼容1.0。
OAuth協議常用于web訪問,基于HTTP協議。實際上,OAuth只是定義了一種流程,以及該流程中各方的角色定義和功能職責,并不限于HTTP這一種傳輸通道。
上面的流程圖中并沒有介紹resource server和authorization server之間的交互,它們可能承載在同一個web服務中,也可能由不同的獨立web服務承載。當resource server和authorization server各自獨立時,正是因為OAuth協議沒有定義其交互過程,導致OAuth協議在產品標準化和工程化中出現困難,后面會慢慢介紹。
云安全
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。