JMeter基本身份验证

Dep*_*epy 36 authorization jmeter http-authentication

我试图暗示使用JMeter的Web服务的基本身份验证过程.但每次它抛出错误401:未经授权.我尝试使用HTTP标头管理器向其添加标头授权和值.它仍然无效.我也尝试过使用HTTP授权管理器.仍然没有运气.有人可以帮忙吗

小智 51

我通过调试来自JMeter的请求发现HTTP Authorization Manager模块没有正确编码用户名和密码.它在用户名后面添加换行符.

要对基于Authh的受保护端点运行JMeter测试,请包含HTTP标头管理器并自行添加Basic Auth标头:

手动编码凭据

  • 从MacOS或Linux:

    echo -n "username:password" | base64

  • 从Windows:

    转到此处并编码您的"用户名:密码"字符串

添加授权标头

在HTTP标头管理器中,添加名为"授权"的条目和值"基本[上面的编码凭据]"


yur*_*rko 33

2017年8月19日编辑JMeter 3.2:

基本上要绕过基本授权,您需要添加值为Basic base64(用户名:密码)Authorization标头.问题是JMeter没有嵌入base64功能.

解决方案是:

Step1添加BeanShell预处理器(预处理器 - > BeanShell预处理器)

在此输入图像描述

步骤2将以下脚本添加到PreProcessor

import org.apache.commons.codec.binary.Base64;
byte[] encodedUsernamePassword = Base64.encodeBase64("neo4j:1234".getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

步骤3添加HTTP标头管理器

在此输入图像描述

步骤4添加具有正确值的Authorization标头

标题名称授权
标题值Basic $ {base64HeaderValue} (base64HeaderValue变量由BeanShell预处理器初始化)

在此输入图像描述

因此,最后当您创建http请求时,Authorization标头将以base64编码的字符串传递给服务器

在此输入图像描述


UBI*_*ACK 8

请执行下列操作:

  • 1/正确配置HTTP授权管理器以及所有必填字段

  • 2 /选项1:使用HTTP 4 :(默认)

  • 从JMeter 3.2开始,无需使用授权管理器进行任何进一步配置

选项2:使用HTTP 3.1 :(已弃用)