Jmeter实现Basic Auth方式登录
背景
在实际测试日常中,产品有两种登录方式,一种是普通登录方式,另一种则是Basic Auth方式登录。两种登录对应着产品中不同的操作,对权限进行了一个划分。
Postman登录
使用Postman登录,如下方式入参,即可正常登录成功

Jmeter登录
同样的一个登录操作,换到jmeter中实现时,倒遇到了不小的麻烦,琢磨了些时间,终究是解决了,分享出来与大家共享。
1.遇到的问题
切换到jmeter进行登录时,接口返回401,并报Unauthorized。401 是一个什么概念呢:“未经授权”。有两种可能,一是账户密码不对,二是请求格式或者 JMeter 相关设置存在问题。账号密码肯定是对的,那就是存在第二种问题了。

遇到问题了,显示自己琢磨了一番,还是没有解决,所以就来网络上寻求帮助了。寻求一番下来,收获还的确不小。
2.解决办法1
解决思路:进行基本授权,需要添加值为 Basic base64(用户名:密码)的 Authorization 头信息。
第一步: 添加 BeanShell PreProcessor
(前置处理器 > BeanShell PreProcessor),如下所示,说明:BeanShell PreProcessor 或者 JSR223 PreProcessor 任一均可

第二步:将以下脚本添加到 BeanShell PreProcessor
import org.apache.commons.codec.binary.Base64;
byte[] encodedUsernamePassword = Base64.encodeBase64("username:password".getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));
如下图所示:

第三步:添加 HTTP 信息头管理器
路径:线程组>配置文件>HTTP 信息头管理器

第四步:填写正确的 Authorization 信息
header name 填: Authorization
header value 填:Basic ${base64HeaderValue} (第二步创建的变量)
如下图所示:

第五步:添加 HTTP 请求
输入获取token的接口,如下:

第六步:查看结果
当创建 http 请求时,Authorization 将以 base64 编码的字符串传递给服务器,成功发送请求后,在 Request Headers 中就可以看到 Authorization 的信息。

自 JMeter 3.2 以后,就不需要上述的方法了,有了更优化的解决方案,那就是解决办法2。
3.解决办法2
第一步: 添加 HTTP 授权管理器
(配置元件 > HTTP 授权管理器)
说明:它提供了自动将相关 Authorization 信息添加到 HTTP 请求 header 的功能。

第二步:添加授权信息
基本 URL:http://XXXXXXXX
用户名:user
密码:passwd
将 域 和 Realm 保留为空
Mechanism:BASIC_DIGEST
如下所示:

第三步:添加 HTTP 请求
输入获取token的接口,如下:

第四步:查看结果

Jmeter实现Basic Auth方式登录,使用上述两个办法可以完美解决,希望对有疑惑的人有所帮助。个人还是喜欢第二种方式,第二种相对简单一些。
Jmeter实现Basic Auth方式登录的更多相关文章
- laravel 验证码 auth方式登录 中间件判断session是否存在
首先下载laravel的插件 composer下载 实现验证码 composer require mews/captcha 在config/app.php进行配置 'providers' ...
- 使用crypt配置Basic Auth登录认证
简介 Basic Auth用于服务端简单的登录认证,通常使用服务器Nginx.Apache本身即可完成.比如我们要限定某个域名或者页面必须输入用户名.密码才能登录,但又不想使用后端开发语言,此时Bas ...
- iOS AFNetWorking下得Basic Auth认证请求方式
我新入职了一家公司,做了一个项目,服务器的大哥说他采用的是Basic Auth认证请求方式,一般我们用的都是OAuth的认证方式,下面我们就对比一下这两种认证方式 百度百科得到如下 Basic Aut ...
- Http basic Auth 认证方式帮助类
BasicAuthenticationUtil import java.io.IOException; import java.security.MessageDigest; import javax ...
- ios开发使用Basic Auth 认证方式
http://blog.csdn.net/joonchen111/article/details/48447813 我们app的开发通常有2种认证方式 一种是Basic Auth,一种是OAuth ...
- Basic Auth
开放平台 把网站服务封装成一系列接口供第三方开发者使用,这种行为就叫做Open API,提供开放API的平台本身就被称为开放平台.比如一些网站支持QQ登录,那QQ就相当于开放平台,QQ提供了一些OPE ...
- 精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证
本文是精讲RestTemplate第9篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层H ...
- java 发送带Basic Auth认证的http post请求
构造http header private static final String URL = "url"; private static final String APP_KEY ...
- MongoDb在windows下的安装与以auth方式启用服务
一.下载安装 1.去官网上下载适合自己电脑的MongoDB版本 下载MongoDB 2.安装MongoDB 安装还是比较简单,按照步骤一步一步往下走就可以了. 3.启动MongodDB 安装完成之后 ...
随机推荐
- Confluence 6 理解你许可证的用户数
基于你的许可证类型,在你 Confluence 可以被注册的用户也许有限制. 在许可证明细页面中,将会告诉当前使用了多少的许可证(你注册的用户数量). 包括仅仅在 Confluence 中可以使用gl ...
- conda 安装多个版本的python
再添加一个python3.6conda create --name py36 python=3.6然后通过source activate py36来激活环境
- Java的两个实验程序
日期:2018.10.07 星期五 博客期:015 Part1:----------------第一个是二柱子出30道小学数学题: 一.程序设计思想 本程序设计由三部分构成,第一部分因为循环30次的需 ...
- PHP之十六个魔术方法
1.__construct,__destruct__constuct构建对象的时被调用:__destruct明确销毁对象或脚本结束时被调用:2.__get,__set__set当给不可访问或不存在属性 ...
- hdu2196 树形dp经典|树的直径
/* 两种做法 1.求出树直径v1,v2,那么有一个性质:任取一点u,树上到u距离最远的点必定是v1或v2 那么可以一次dfs求树v1 第二次求dis1[],求出所有点到v1的距离,同时求出v2 第三 ...
- N阶楼梯上楼问题
N阶楼梯上楼问题 时间限制: 1 Sec 内存限制: 32 MB 题目描述 样例输出 13 #include <stdio.h> int main() { int i, n; long ...
- python unittest框架装饰器
要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单 ...
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
有这样一个压力测试环境,有一个上传页面,上传成功之后服务器会返回一些上传信息(比如文件的 id 或者保存路径之类的信息),然后压力机会继续下一个请求,比如调整 id 为 xx 的文件的一些信息等等.问 ...
- Deap thinking
它使任何人离任何问题的答案间的距离变得只有点击一下鼠标这么远! ---------<美国周刊> ---------周志华<机器学习> 所以我们更应该学会Deep Think ...
- K/3 Cloud Web API接口说明文
K/3 Cloud Web API接口说明文 目的 三方集成,提供第三方系统与Cloud集成调用接口. 技术实现 HTTP + Json 提供标准接口 编号 名称 说明 1 Kingdee.BOS.W ...