1. 程式人生 > >WEB使用OAuth2協議實現開放介面的設計方案

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,並返回一個訪問許可。

第三方應用接入WEB

介面設計

與授權伺服器的介面

與資源伺服器的介面

與WEB的介面

頁面設計

引導使用者登入的頁面

資源展示的頁面