RobotFrameWork http/https oauth接口测试 (一)

感觉自己最近销声匿迹快一个月了,应该总结下自己这个月学习的东西了~~~折腾完公司私有协议的接口测试(c++接口),开始折腾公司的http/https接口和webservice接口的测试,想着把所有的这些接口尽量的都放在RobotFrameWork内进行测试,其实这些接口,http/https接口和webservice接口之前已经能用SoapUI或者LoadRunner实现了测试,而且webservice接口我有专门用myeclipse结合TestNG框架和XFIRE框架搭建了数据驱动的自动化测试工具,但是前者没有实现自动化,参数写死在脚本内,后者技术性太强,一般测试不会用。而且测试里也没有详细的测试报告,于是我就想着全部移植到RF内。

基于https协议的接口,是因为公司有部分业务采用了Oauth2.0协议来开发的,自己做的认证服务器,也做了资源服务器,主要是采用spring mvc、openjpa框架来实现的,底层的数据传输采用HTTPS协议,返回值数据格式采用的是标准JSON格式。

首先:应该了解Oauth2.0协议的基本概念,基本应用场景

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。官方网址:http://oauth.net。

常见应用场景:在京东上可以不注册用户,用户可以直接用qq号登陆即可。

在Oauth当中有四个角色:

A:Resource Owner(RO):资源所有者,资源可以类似于照片,文档,会员信息等等。对应于上面应用场景中的用户,用户拥有的资源都是被保护的资源。

B: resource server资源服务器:保存资源的服务器.访问资源服务器就要出示 Access Token。对应上面场景中的京东,qq用户需要携带Access Token才能正常访问京东服务器(不然用其他APP的账号咋就不能登呢,嘿嘿)。

C:client客户端:拿到Token授权后,可以代表资源所有者访问资源服务器。对应上面场景中的京东。

D: authorization server授权服务器:对资源所有者进行认证,认证通过后,向 客户端发放 Access Token,对应上面场景中的qq服务器。

然后:了解下oauth协议的总体处理流程。

不同的公司,不同的授权模式,处理流程应该是不一样的,这里就以上面的应用场景为例,说明下大致的业务流程:

Step1:申请接入,从腾讯获取appid和apikey
    Step2:开发应用,并设置协作者帐号进行测试联调;
    Step3放置QQ登录按钮
    Step4:通过用户登录验证和授权,获取Access Token
    Step5:通过Access Token获取用户的OpenID
    Step6调用OpenAPI,来请求访问或修改用户授权的资源。

上面的业务流程主要还是来自http://wiki.connect.qq.com,腾讯官网提供给第三方应用使用的,从这里可以加深对oauth协议的了解,下面是官网里面的流程图

简单点的可以看下面的图:

最后:OAuth定义的4种授权类型

第一种:Authorization Code授权码方式(最安全):

qq就是采用这种方式进行授权的,大致流程如下:

(A)用户访问客户端,后者将前者导向认证服务器。

(B)用户选择是否给予客户端授权。

(C)假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。

(D)客户端收到授权码,附上早先的"重定向URI",向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。

(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。

第二种:Implicit Grant隐式授权:相比授权码授权,隐式授权少了第一步的取Authorization Code的过程,而且不会返回 refresh_token。大致流程如下:

(A)客户端将用户导向认证服务器。

(B)用户决定是否给于客户端授权。

(C)假设用户给予授权,认证服务器将用户导向客户端指定的"重定向URI",并在URI的Hash部分包含了访问令牌。

(D)浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值。

(E)资源服务器返回一个网页,其中包含的代码可以获取Hash值中的令牌。

(F)浏览器执行上一步获得的脚本,提取出令牌。

(G)浏览器将令牌发给客户端。

第三种:Resource Owner Password Credentials资源所有者密码证书授权:这种验证主要用于资源所有者对Client有极高的信任度的情况,比如操作系统或高权限程序。只有在不能使用其它授权方式的情况下才使用这种方式。我做的这个项目就是采用的这种授权类型,主要流程如下:

(A)用户向客户端提供用户名和密码。

(B)客户端将用户名和密码发给认证服务器,向后者请求令牌。

(C)认证服务器确认无误后,向客户端提供访问令牌。

第四种:Client Credentials客户端证书授权:这种情况下 Client使用自己的 client证书(如 client_id及client_secret组成的 http basic验证码)来获取 access token,只能用于信任的client。

(A)客户端向认证服务器进行身份认证,并要求一个访问令牌。

(B)认证服务器确认无误后,向客户端提供访问令牌。

对这个讲解很深入的可以参考http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

时间: 2024-10-16 14:43:48

RobotFrameWork http/https oauth接口测试 (一)的相关文章

RobotFrameWork http/https oauth接口测试 (二)

在RobotFrameWork http/https oauth接口测试 (一)中,大致介绍了相关的概念,终于可以步入正题了~~~ 先介绍下项目背景: 公司的项目采用的授权模式是第三种resource owner password credentials密码模式,因为认证服务器和资源服务器都是公司内部的项目,所以采用了这个方式,公司的处理流程大致如下: (A)用户向客户端提供账号和密码. (B) 客户端将用户凭证以及客户端凭证信息发送到认证服务器. (C) 认证服务器校验客户端请求合法,并且用户

RobotFramework教程使用笔记——requests和requestslibrary库

Robotframework也可以进行接口测试,只要导入相应的库就可以做到. 一.准备工作 1.导入requests,使用pip,或者手动下载 pip install requests 2.导入requestsLibrary pip install robotframework-requests 如何安装pip,可以看这里:http://www.cnblogs.com/dreamyu/p/6856067.html 二.简单例子  先来一个简单的请求实例: 查看运行结果:     返回值中文乱码问

Jenkins-测试自动化环境搭建(Python+RobotFramework+selenium)

下载插件: Python:https://wiki.jenkins-ci.org/display/JENKINS/Python+Plugin RobotFramework:https://wiki.jenkins-ci.org/display/JENKINS/Robot+Framework+Plugin selenium:https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin 插件使用: 将下载的.hpi文件放置到该目录下:D:\a

oauth三方登陆的原理

一 说明 OAuth是由Blaine Cook.Chris Messina.Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准(resful和webservice都可以).OAuth规范的1.0版于2007年12月4日发布. 通过官方网址:https://oauth.net/可以阅读更多的相关信息. 二 OAUTH认证授权具有以下特点: 1. 简单:不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用: 2. 安全:没有涉及到用

一.Appium+RobotFrameWork+Jenkins环境安装

一. 安装Android开发环境安装 1.studio64.exe安装:参考http://www.cnblogs.com/fnng/p/4552438.html 2.通过androidstudio下载sdk: 我的下载路径为:D:\Android(new)\AppData\Local\Android\sdk\platforms 二.模拟器的选择 选择一: 用eclipse(adt),使用eclipse自带的模拟器(注:eclipse已经没法安装sdk了,可以通过androidstudio下载sd

认证授权那点事儿 —— OAuth 2.0

OAuth 2.0 —— 开放授权协议,对应的规范文件RFC-6749早在2012年便成形,所以这并不是一个新的技术(你问我为啥研究这个,我也想吟一首诗啊...组织上就是这样决定的),但由于其必不可少的价值,在今天的网络上已经得到了广泛的应用. OAuth2.0认证是要在不同的应用之间打通互信,互信的目的是为了实现一定程度上的用户数据分享,没数据的一方到有数据的一方拿数据,并且在时间尺度上,数据的分享是受控的. 比如你在微信上打开小程序,小程序会向微信索要你的基本信息:比如你用马克飞象作为印象笔

OAuth 2.0 的四种授权模式

RFC 6749 OAuth 2.0 的标准是 RFC 6749 文件.该文件先解释了 OAuth 是什么. OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.......资源所有者同意以后,资源服务器可以向客户端颁发令牌.客户端通过令牌,去请求数据. 这段话的意思就是,OAuth 的核心就是向第三方应用颁发令牌.然后,RFC 6749 接着写道: (由于互联网有多种场景,)本标准定义了获得令牌的四种授权方式(authorization grant ). 也就是说,OAu

Windows环境下配置robotframework

Robot Framework安装准备 一.python3.6以上版本 安装过程中勾选“add python to path”,就可以自动配置好环境变量. 安装完成后在命令行输入python,如下图所示就是配置成功了.  二.在线安装robotframework 在命令行输入pip install robotframework进行安装,如果提示pip无法使用,则更新pip, 可在命令行中输入python -m pip install --upgrade pip来进行升级. 升级成功后输入pip

Power BI REST API

Overview of Power BI REST API https://msdn.microsoft.com/en-us/library/dn877544.aspx 验证方式 OAuth 2.0 https://oauth.net/2/ Create Dataset https://msdn.microsoft.com/zh-cn/library/mt203562.aspx Get Datasets https://msdn.microsoft.com/zh-cn/library/mt203