Jmeter具有基本认证

时间:2017-09-11 11:22:59

标签: jmeter jmeter-plugins

我想在RestAPI上运行loadtest,我可以通过java

访问它
        name = "username";
        String password = "password";
        String authString = name + ":" + password;
        byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); //
        String authStringEnc = new String(authEncBytes);
        URL url = new URL(urlStr);
        URLConnection urlConnection = url.openConnection();
        urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);

但是在jmeter中我无法添加这个,jmeter的新功能请帮忙。

2 个答案:

答案 0 :(得分:1)

自JMeter 3.2以来,Basic Auth使用HttpClient4实现提供Out Of The Box并默认配置,请参阅:

  

HTTP HC4实现现在提供默认启用的抢先式基本身份验证

只需添加HTTP_Authorization_Manager并填写所需信息。

示例:

enter image description here

  • 配置将是:

enter image description here

此配置将匹配以" http://localhost:8081"

开头的所有请求

另见这个问题:

虽然我的答案被低估了,但我不知道是哪个原因,这是设置Basic Auth的最佳方法。自3.2以来,根本不再需要脚本。

答案 1 :(得分:1)

您可以使用相同的代码生成编码凭据:

  1. HTTP Header Manager添加为相关HTTP请求采样器的子项
  2. JSR223 PreProcessor添加为相关HTTP请求采样器的子项
  3. 将以下代码放入"脚本"区域

    name = "username";
    String password = "password";
    String authString = name + ":" + password;
    byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes()); //
    String authStringEnc = new String(authEncBytes);
    sampler.getHeaderManager().add(new org.apache.jmeter.protocol.http.control.Header("Authorization", "Basic " + authStringEnc));
    
  4. 检查Cache compiled script if available

  5. JMeter现在应该添加必要的"授权"标题为您的请求。

    JMeter Basic Authentication