在RobotFrameWork http/https oauth接口測試 (一)中,大致介紹了相關的概念,終於可以步入正題了~~~
先介紹下項目背景:
公司的項目采用的授權模式是第三種resource owner password credentials密碼模式,因為認證服務器和資源服務器都是公司內部的項目,所以采用了這個方式,公司的處理流程大致如下:
(A)用戶向客戶端提供賬號和密碼。
(B) 客戶端將用戶憑證以及客戶端憑證信息發送到認證服務器。
(C) 認證服務器校驗客戶端請求合法,並且用戶憑證有效,向客戶端提供訪問令
認證服務器主要是管理Token,總共有2個接口,一個是getToken,一個是refreshToken。而資源認證服務器主要是處理登錄到會議節點服務器前的業務,暫時有8個接口,在手機移動端下載app后,可以通過獲取驗證碼直接用手機號注冊用戶(或者qq,微信登錄),然后就可以登錄到會議管理后台,稍微羅列下接口的部分邏輯:
驗證手機號碼接口--》 獲取驗證碼接口--》驗證手機驗證碼接口--》用戶注冊接口--》用戶登錄會議管理后台接口--》創建會議室接口---》用戶登錄會議節點服務器接口,其中用戶登錄web管理后台接口前的接口header的Authorization只需要攜帶客戶端憑證信息即可,訪問的是認證服務器,拿用戶憑證以及客戶端憑證信息去獲取token,以便進一步訪問資源服務器內的資源(后面的接口),之后的接口header的Authorization攜帶的是認證服務器返回的Token.
對於認證服務器的接口(用戶登錄web管理后台接口),接口參數如下:
其中:Basic encodeBase64(${clientId} + ":" + ${clientSecret}),就是使用 base64 對客戶端憑證( clientId,clientSecret,這兩項寫在客戶端配置文件中)拼接后進行編碼。
request-http:
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=johndoe&password=A3ddj3w
response-http:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"example_parameter":"example_value"
}
對於資源服務器的接口,Header的Authorization攜帶的是認證服務器返回的Token,參數如下:
然后,介紹下如何用RF工具進行測試的,在RF中,已經提供了基於http/https協議的庫,就是requests庫,只需要在官網下載requests和requestLibray即可。基於之前我寫的安裝步驟,實際用pip命令最容易解決。執行pip install requests,



