【问题标题】:How to test with jMeter against basic auth protected domain?如何使用 jMeter 针对基本身份验证保护域进行测试?
【发布时间】:2015-09-29 21:13:35
【问题描述】:

我正在运行 apache/nginx 网络服务器的暂存集群,其中域具有基本身份验证限制访问。我的目标是用 jmeter 测试集群的性能。

为了通过身份验证,我添加了 jmeter 的 HTTP 身份验证控制器。这行得通,但是每个请求都在 apache 上显示两个 logentries。一个 200 和一个 401。这是用户必须经过身份验证的第一个请求时的正常行为。不幸的是,jmeter 对每个请求都执行此操作。

如何确保每个线程/用户只请求访问一次。甚至更好的是,我如何在没有每个用户都需要进行身份验证的情况下授予 jmeter 访问权限。我相信这会影响测试结果。

感谢您对此的任何提示。

【问题讨论】:

    标签: jmeter performance-testing basic-authentication


    【解决方案1】:

    这听起来像一个 JMeter 错误,因为提供了适当的“授权”标头,不应该存在 WWW-Authenticate 挑战。如果您可以通过JMeter Bugzilla 提交或通过JMeter Users Mailing List 标记它,那就太好了

    与此同时,您可以使用以下方法之一解决它:

    1. 将凭据直接注入 URL - 如果 JMeter 进入“路径”输入字段,例如:

      http://username:password@host.domain/path
      

    2. 使用 Beanshell 脚本即时构建正确的“授权”标头。为此:

      • 确保HTTP Header Manager 存在。如果没有 - 将其添加到测试计划级别或作为需要验证的 HTTP 请求的子项
      • Beanshell PreProcessor 添加为需要验证的HTTP 请求的子项
      • 通过“参数”输入提供以空格分隔的用户名和密码
      • 将以下代码放入预处理器的“脚本”区域

        import org.apache.jmeter.protocol.http.util.Base64Encoder;
        import org.apache.jmeter.protocol.http.control.Header;
        
        String encodedCredentials = Base64Encoder.encode(bsh.args[0] + ":" + bsh.args[1]);
        sampler.getHeaderManager().add(new Header("Authorization", "Basic " + encodedCredentials));
        

    您不应再在任何地方收到任何 401 代码。

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 1970-01-01
      • 2021-09-24
      • 2019-03-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      相关资源
      最近更新 更多