无法通过JMeter中的标题授权。面对authorizedError

时间:2018-06-21 05:47:58

标签: jmeter

我正在JMeter中进行性能测试,我必须使用Header Manager传递授权详细信息。

这是我的代码:

String headerName = "Authorization";
String headerValue = "Basic MyKey MyValue";

Header bcHeader = new Header(headerName,headerValue);
HeaderManager hm = new HeaderManager();
hm.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
hm.add(bcHeader);
hm.add(new Header("Content-Type", "application/json"));
hm.add(new Header("Access-Control-Allow-Origin", "*"));

我正面对UnAuthorized error

请告诉我是否还有另一种编写代码的方法。

谢谢。

2 个答案:

答案 0 :(得分:0)

通常,您应该使用HTTP Authorization Manager来绕过Basic HTTP Auth挑战。

但是,如果您要手动构造Authorization标头,则应注意其格式如下

  • 名称:Authorization
  • 值:Basic

Basic之后,您需要提供用冒号分隔并编码为Base64的用户名和密码。因此,如果您的用户名是MyKey,密码是MyValue,则应该对字符串MyKey:MyValue进行编码,并将结果添加到标头中,使其看起来像:

Basic TXlLZXk6TXlWYWx1ZQ==

关于Java代码,它类似于:

String headerName = "Authorization";
String username = "MyKey";
String password = "MyValue";
Header bcHeader = new Header(headerName,
        "Basic " +
                Base64.encodeBase64String((username + ":" + password).getBytes(StandardCharsets.UTF_8)));
HeaderManager hm = new HeaderManager();
hm.add(bcHeader);
hm.add(new Header("Content-Type", "application/json"));
hm.add(new Header("Access-Control-Allow-Origin", "*"));
hm.setName(JMeterUtils.getResString("header_manager_title"));
hm.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
hm.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName());

答案 1 :(得分:0)

  1. 如果您在响应中某处获得授权标头值,则可以提取和动态值并将相关性应用于脚本。
  2. 这是您要做的。使用regular expressions提取授权标头值并将其存储在jmeter变量中,以确保您已将其另存为Auth
  3. 根据jmeter范围规则添加header manager(右键单击线程组-> config元素->标头管理器)。
  4. 使用$ {variablename}并用$ {variablename}替换硬编码的标头值,因为我们将其保存在Auth变量中,因此可以使用${Auth}
  5. 您可以将标头添加到标头管理器,单击添加并提供标头名称和值,如下所示

我在请求1的响应中获得授权值,如下所示

enter image description here

因此要提取此内容,请将regular expression extractor添加到同一请求(请求1),如下所示。

enter image description here

现在我们可以在标头管理器中使用$ {Auth},向请求2添加header manager并给出标头名称和值,如下所示

enter image description here

您可以在结果中看到授权已超过其值 enter image description here

有关提取变量的更多信息,请遵循this link

让我知道是否有帮助