OAuth2.0 access_Token 如何控制接口訪問權限?
在 OAuth2.0 應用中,如何確保嵌套在 A 公司 App 內的 B 公司 H5 頁面僅能訪問特定接口,而非 A 公司所有接口,是一個重要的安全考量。尤其是在 A 公司通過 OAuth2.0 向 B 公司 H5 頁面頒發 Access_token 后,如何限制該 token 的訪問范圍至關重要。
場景:A 公司 App 嵌入了 B 公司的 H5 頁面,該 H5 頁面需要訪問 A 公司 App 的用戶信息。獲取用戶信息需要通過 OAuth2.0 獲取 A 公司的 access_token。如果不加限制,此 token 理論上賦予 B 公司訪問 A 公司所有接口的權限,存在安全隱患。
解決方案的核心在于 OAuth2.0 的 scope 機制。scope 定義了 access_token 的權限范圍,即 token 可訪問的接口。B 公司 H5 頁面在請求 access_token 時,需明確聲明所需 scope,例如僅請求“獲取手機號”、“獲取用戶名”和“獲取用戶郵箱”等特定權限。
用戶在 A 公司 App 中授權這些 scope 后,A 公司后端會頒發包含這些特定 scope 的 access_token。B 公司 H5 頁面使用該 token 訪問 A 公司資源服務器時,資源服務器會根據 token 中的 scope 判斷是否允許訪問請求接口。
因此,A 公司資源服務器需實現邏輯,檢查每個請求的 access_token 中包含的 scope,并根據 scope 決定是否允許訪問。 這確保了 B 公司 H5 頁面只能訪問 A 公司預設且用戶授權的接口。
需要注意的是,scope 和用戶授權是兩個概念。scope 定義了 A 公司允許訪問的最大權限,而用戶授權決定了實際可訪問的權限。通過合理設置 scope 和用戶授權機制,A 公司可以有效控制 B 公司 H5 頁面對 App 接口的訪問,保障安全和隱私。