Oauth 2.0的幾種授權模式及應用場景


Oauth 2.0

2012年10月,OAuth 2.0協議正式發布為RFC 6749。現在百度開放平台騰訊開放平台等大部分的開放平台都是使用的OAuth 2.0協議作為支撐。

概述

OAuth是一個開放標准,允許用戶授權第三方應用訪問他們存儲在另外的服務提供者上的信息,而不需要將用戶名和密碼提供給第三方移動應用或分享他們數據的所有內容。

在OAuth 2.0的認證和授權的過程中主要包括以下角色定義:

  • Resource owner: 資源所有者(通常指用戶或者提供資源服務的平台)
  • Resource server:資源服務器(托管受保護資源的服務器)
  • Client:客戶端(瀏覽器、APP)
  • Authorization server:授權服務器(頒發訪問令牌、驗證令牌、刷新令牌)

交互過程

OAuth 在 "客戶端" 與 "服務提供商" 之間,設置了一個授權層(authorization layer)。"客戶端" 不能直接登錄 "服務提供商",只能登錄授權層,以此將用戶與客戶端區分開來。"客戶端" 登錄授權層所用的令牌(token),與用戶的密碼不同。用戶可以在登錄的時候,指定授權層令牌的權限范圍和有效期。"客戶端" 登錄授權層以后,"服務提供商" 根據令牌的權限范圍和有效期,向 "客戶端" 開放用戶儲存的資料。

在這里插入圖片描述

以下為QQ的授權頁面,采用的是授權碼模式

在這里插入圖片描述

客戶端授權模式

  • implicit:簡化模式,(不安全,適用於純靜態頁面應用)
  • authorization code:授權碼模式(功能最完整、流程最嚴密的授權模式,通常使用在公網的開放平台中)
  • resource owner password credentials:密碼模式(一般在內部系統中使用,調用者是以用戶為單位。)
  • client credentials:客戶端模式(一般在內部系統之間的API調用。兩個平台之間調用。調用者是以平台為單位。)

簡化模式

簡化模式適用於純靜態頁面應用。該模式下,access_token 容易泄露且不可刷新

  1. 用戶請求網站,如:www.tangyuewei.com
  2. 重定向到一個授權頁面
  3. 用戶同意授權
  4. 重定向到網站,並帶上access_token如:www.tangyuewei.com?access_token=123
  5. 獲取到資源服務器的資源

授權碼模式

適用於有自己的服務器的應用,它是一個一次性的臨時憑證,用來換取 access_tokenrefresh_token。一旦換取成功,code 立即作廢,不能再使用第二次。

  1. 用戶請求網站,如:www.tangyuewei.com
  2. 重定向到一個授權頁面
  3. 用戶同意授權
  4. 重定向到應用的一個回調地址,如:www.tangyuewei.com/recieve_token?code=123
  5. code換取access_tokenrefresh_token

密碼模式

用戶向客戶端提供自己的用戶名和密碼,向 "服務商提供商" 換取 access_token

在這里插入圖片描述

客戶端模式

如第三方,或者調用者是一個后端的模塊,沒有用戶界面的時候,可以使用客戶端模式。鑒權服務器直接對客戶端進行身份驗證,驗證通過后,返回 token。

在這里插入圖片描述

接入公司內部系統

  • 后台管理系統
  • 前台業務系統

后台管理系統

后台系統之間資源互相訪問,如:日志模塊,發郵件模塊,發短信模塊等(平台資源)。

需要引用相關模塊的系統可采用客戶端模式授權

前台業務系統

前台系統之間資源互相訪問,如:用戶信息,模塊等(用戶資源)。

需要引用相關模塊的系統可采用密碼模式授權

綜合建議

綜合上述模式及認證流程,個人覺得以下場景可以考慮引入Oauth 2.0認證:

  1. 系統敏感資源服務進行安全認證及資源保護工作
  2. 多個服務的統一登錄認證中心、內部系統之間受保護資源請求
  3. 將受保護的用戶資源授權給第三方信任用戶
  4. 以后要做開發平台類似百度開放平台騰訊開放平台


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM