前言
OAuth2應用廣泛苍在,網上也不乏優(yōu)秀的參考文章窜司,想要快速了解OAuth2的朋友轰驳,可以參考阮一峰-OAuth2.0的一個簡單解釋。本文僅為個人理解绿聘,將OAuth的概念原理進行整理歸納,在查閱資料時次舌,發(fā)現阮一峰老師的OAuth專題博文已將這一主題解析得相當透徹熄攘,因此下文不再贅述,直接引用作為內容填充彼念,請閱讀本文的讀者務必點開引用鏈接一起閱讀挪圾。
一、OAuth標準
OAuth2是關于授權認證的一種開放標準RFC6749逐沙,它允許用戶提供一個令牌哲思,而不是用戶名和密碼來訪問他們存放在特定服務提供者的數據。
1.1 角色
它引入了授權層酱吝,定義了4種角色。
Resource Own 資源所有者:能夠授予對受保護資源的訪問權限的實體土思。
Resource Server 資源服務器:托管受保護資源的服務器务热。
Client 客戶端:發(fā)出受保護資源請求的應用程序。
Authorization Server 授權服務器:驗證資源所有者身份成功后頒發(fā)令牌的服務器己儒。
1.2 整體過程
客戶端向資源所有者請求授權
資源所有者同意給客戶端授權
客戶端攜帶 2 得到的授權向授權服務器申請令牌
授權服務器對客戶端進行驗證崎岂,確認后并頒發(fā)令牌
客戶端攜帶 4 得到的令牌向資源服務器請求被保護的資源
資源服務器驗證令牌成功后,響應請求
二闪湾、客戶端授權模式
OAuth2 支持4種授權方式冲甘,適用于不同場景。阮一峰-OAuth2的四種方式途样,講的很細致很好理解江醇,下面將這四種模式進行簡單總結區(qū)分。
-
Authorization Code 授權碼模式
最安全最常用何暇,比如使用微信登錄第三方應用就是使用了授權碼模式陶夜,具體可以了解移動應用微信開發(fā)指南。用于獲取令牌和刷新令牌裆站,適用于前后端合作的情況条辟。
-
Implicit 簡化模式
因沒有獲取授權碼這一過程黔夭,直接獲取令牌,又稱隱藏式授權碼模式羽嫡。安全性不高本姥,不能獲取刷新令牌,適用于純前端的應用杭棵。
-
Resource Owner Password Credentials 密碼模式
直接使用 resource own 的用戶名密碼申請令牌婚惫,安全性不高,必須是用戶高度信任的應用颜屠。
-
Client Credentials 客戶端憑證模式
直接通過 client_id 和 client_secret 獲取令牌辰妙,不帶用戶信息,獲取的是應用級的令牌甫窟。