重要術語
Authorization Server:受權服務器,可以成功驗證資源擁有者和獲取受權,並在此以後分發令牌的服務器;
Resource Server:資源服務器,存儲用戶的數據資源,可以接受和響應受保護資源請求的服務器;
Client:客戶端,獲取受權和發送受保護資源請求的第三方應用;
Resource Owner:資源擁有者,可以對受保護資源進行訪問許可控制的實體;
Protected Resource:受保護資源,可以使用OAuth請求獲取的訪問限制性資源;
Authorization Code:受權碼;
Refresh Token:刷新令牌;
Access Token:訪問令牌。
核心工做流程
OAuth 爲客戶端提供了一種表明資源擁有者訪問受保護資源的方法。在客戶端訪問受保護資源以前,它必須先從資源擁有者獲取受權(訪問許可),而後用訪問許可交換訪問令牌(Access Token,包含許可的做用域、持續時間和其它屬性等信息)。客戶端經過向資源服務器出示訪問令牌來訪問受保護資源。訪問令牌提供了一個抽象層,將不一樣的受權結構(如用戶名密碼)替換成資源服務器能夠理解的單一訪問令牌。這種抽象使得分發短時間有效的訪問令牌成爲可能,也使得資源服務器沒必要理解多種多樣的受權機制。使用OAuth2.0 機制,進行認證受權,獲取訪問令牌,並經過訪問令牌來訪問受保護資源,如圖所示:
OAuth2.0 的工做流程簡述以下: (1) 客戶端從資源擁有者(最終用戶)那裏請 求受權。受權請求可以直接發送給資源擁有者,或者 間接的經過受權服務器發送請求; (2) 資源擁有者爲客戶端受權,給客戶端發送一個 訪問許可(Authorization Code); (3) 客戶端出示本身的私有證書(client_id 和 client_secret)和上一步拿到的訪問許可,來向受權服務 器請求一個訪問令牌; (4) 受權服務器驗證客戶端的私有證書和訪問許 可的有效性,若是驗證有效,則向客戶端發送一個訪 問令牌,訪問令牌包括許可的做用域、有效時間和一 些其餘屬性信息; (5) 客戶端出示訪問令牌向資源服務器請求 受保護資源; (6) 資源服務器對訪問令牌作出響應。