在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,