RobotFrameWork http/https oauth接口测试 (二)
在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,


、 
RobotFrameWork http/https oauth接口测试 (二)的更多相关文章
- RobotFrameWork http/https oauth接口测试 (一)
感觉自己最近销声匿迹快一个月了,应该总结下自己这个月学习的东西了~~~折腾完公司私有协议的接口测试(c++接口),开始折腾公司的http/https接口和webservice接口的测试,想着把所有的这 ...
- 【百度】大型网站的HTTPS实践(二)——HTTPS加密算法介绍
大型网站的HTTPS实践(二)——HTTPS加密算法介绍 原创 网络通信/物联网 作者:AIOps智能运维 时间:2018-11-09 15:09:43 358 0 前言 在上一篇文章中,我们简要 ...
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...
- 基于HTTPS的接口测试——nginx配置SSL
目录 基于HTTPS的接口测试--nginx配置SSL 1. 背景 2. 所需环境与域名备案解析 2.1 云服务器 2.2 域名 2.3 SSL证书 2.4 网站备案 2.5 域名解析 3.nginx ...
- 使用robotframework做接口测试二——处理响应数据
初使用RequestsLibrary做接口测试时,你会不会感到困惑,为什么会有${resp.content}, ${resp.status_code}这样的写法,这个status_code什么鬼,f5 ...
- robotframework使用requestsLibrary进行接口测试
一.定义 接口测试:接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务 分类:RESTful.webservice接口 二.安装 进入C:\Pyhon27\scripts 先要安装r ...
- 大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt388 HTTPS 在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与 ...
- Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- https学习笔记二----基础密码学知识和python pycrypto库的介绍使用
在更详细的学习HTTPS之前,我也觉得很有必要学习下HTTPS经常用到的加密编码技术的背景知识.密码学是对报文进行编解码的机制和技巧.可以用来加密数据,比如数据加密常用的AES/ECB/PKCS5Pa ...
随机推荐
- About_MySQL Select--来自copy_03
MySQL Select 查询分类 单表查询:简单查询 多表查询:连接查询 联合查询:多个查询结果汇总 查询的组成 投影查询:挑选要显示的字段 select array1,array2,... f ...
- ListView的HeaderView和Footer
HeaderView介绍 HeaderView用法 属性中添加 ListView中属性listHeader和overScrollHeader区别: android:overScrollHeader=& ...
- [CareerCup] 16.1 Thread and Process 线程和进程
16.1 What's the difference between a thread and a process? 进程Process是程序执行时的一个实例.一个进程是被分配系统资源的独立单元,每个 ...
- ado.net 修改,查询
修改: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- 防止系统内存溢出触发OOM的一个内核参数
[root@djf_dev_server ~]# sysctl -a|grep overcomvm.overcommit_memory = 0 0 内存不足报错(不会继续分配内存,防止oom)1 表示 ...
- SBT Assembly - Deduplicate error & Exclude error
sbt assembly java.lang.RuntimeException: deduplicate: different file contents found in the following ...
- ETL
1.ETL的定义 ETL分别是“Extract”.“ Transform” .“Load”三个单词的首字母缩写也就是“抽取”.“转换”.“装载”,但我们日常往往简称其为数据抽取. ETL是BI/DW ...
- scrum站立会议学习
项目:连连看游戏 小组名称:临时小组 组长:张政 小组成员: 李权 武志远 张政 张金生 MASTER:张政 会议内容: 一.已完成项: 1.根据先前的安排和计划完成了项目主要环境的搭建,配置好了基本 ...
- BizTalk开发系列(二十二) 开发自定义Map Functoid
尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...
- String-原型属性
<script> /*将trim方法定义到字符串对象中 *使用字符串的原型属性来完成 *原型prototype:就是该对象的一个描述,该描述中如果添加新功能,那么该对象就具备这些新功能. ...