WEB使用OAuth2協議實現開放介面的設計方案
術語
developer:開發者,第三方應用的開發者。
openPlat:開放平臺,發放App Key(相當於第三方應用的ID)、App Secret(私鑰,驗證ID是否唯一有效,需要妥善保管)。
Authorization Server:授權服務端,發放Code、Access Token,驗證App Key、App Secret、Code的有效性。
Resource Server:資源伺服器,驗證Access Token,提供資源的訪問介面。
Client:客戶端(第三方應用),傳送訪問受保護資源的請求,獲取Code、Access Token。
Resource Owner:資源擁有者,對保護資源有訪問許可控制的實體(一般是指個人)。
Protected Resource:受保護的資源,能夠通過OAuth2.0獲取訪問控制權的資源。
Authorization Code:授權碼
Refresh Token:重新整理令牌,Access Token失效後重新整理Access Token的一個標識。
Access Token:訪問令牌
API:資源封裝為介面對外開放,得到訪問授權的第三方應用可以呼叫API。
架構
開放平臺
功能
發放App Key、App Secret
第三方應用在WEB提供的開放平臺註冊,提供回撥地址;開放平臺生成App Key、App Secret,並返回給第三方應用。授權伺服器通過App Key、App Secret、回撥地址驗證第三方應用是否被授權了。
介面設計
獲取App Key、App Secret的介面
傳入的引數:
Client name:第三方應用的名稱
Callback_url:回撥地址
content:介紹內容
以及第三方應用的其他屬性。
傳出的引數:
App key:第三方應用的ID
App Secret:金鑰
頁面設計
申請獲取App Key、App Secret頁面
收集以下引數:
Client name:第三方應用的名稱
Callback_url:回撥地址
content:介紹內容
以及第三方應用的其他屬性。
返回App Key、App Secret頁面
呈現第三方應用的App Key、App Secret給開發者。
授權服務端
功能
發放Code
授權伺服器驗證使用者的憑證(一般是使用者名稱、密碼,授權伺服器儲存了大量的使用者資訊,每個使用者都有自己的受保護的資源)有效,則給發放Code,並將Code返回給第三方應用。Code是明文傳輸。
發放Access Token
第三方應用使用Code去換取Access Token。此時驗證第三方的ID(App Key、App Secret)、Code的有效性。
驗證App Key、App Secret
授權伺服器儲存已經註冊的第三方應用的App Key、App Public Secret(公鑰),通過私鑰驗證第三方應用是否已經註冊。
驗證Code
驗證Authorization Code是否有效。
介面設計
設計兩個介面:a、獲取Code的介面;b、獲取Access Token的介面。
獲取Authorization Code的介面
客戶端向資源擁有者請求授權,資源請求直接發給資源擁有者,若資源擁有者同意該客戶端授權,則給客戶端返回一個訪問許可。
傳入的引數:
App Key
App Secret
Callback_url
返回的資訊:
未登陸、微授權:跳轉到登陸頁面;
已經登陸、未授權:跳轉到授權頁面;
已經登陸、已經授權:跳轉到傳入的callback_url頁面,並返回一個訪問許可。
獲取Access Token的介面
客戶端向用戶出示自己的私有證書和Authorization Code請求訪問令牌;授權伺服器驗證客戶端的私有證書和訪問許可的有效性,驗證有效則向客戶端傳送一個訪問令牌,令牌包括了作用域、有效時間以及其他屬性。
傳入引數:
App Key:應用的ID
App Secret:第三方應用的私鑰。
Callback_url:回撥url
傳出的引數:
Access Token:Access Token中包含了AppId和使用者資訊UserIdd等。
獲取到Access Token
之後,就可以向資源伺服器出示Access Token,訪問受保護資源。
頁面設計
設計兩個頁面:a、登陸頁面;b、授權頁面
登陸頁面
展示給資源擁有者,輸入使用者名稱的、密碼。登入成功後,如果未授權,則跳轉到授權頁面;如果已經授權,直接跳轉到callback_url頁面,並返回一個訪問許可。
授權頁面
展示給資源擁有者,如果使用者已經授權,則直接跳轉到callback_url頁面,並返回一個訪問許可;如果未授權,則出現授權頁面,授權成功後,跳轉到callback_url,並返回一個訪問許可。