在RobotFrameWork http/https oauth接口測試 (一)中,大體介紹了相關的概念,終於能夠步入正題了~~~web
先介紹下項目背景:json
公司的項目採用的受權模式是第三種resource owner password credentials密碼模式,由於認證服務器和資源服務器都是公司內部的項目,因此採用了這個方式,公司的處理流程大體以下:服務器
(A)用戶向客戶端提供帳號和密碼。微信
(B) 客戶端將用戶憑證以及客戶端憑證信息發送到認證服務器。app
(C) 認證服務器校驗客戶端請求合法,而且用戶憑證有效,向客戶端提供訪問令tcp
認證服務器主要是管理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,