Base64身份验证用户名和密码

时间:2018-04-01 01:36:27

标签: authentication jmeter

我已经能够编写一个python脚本来获取Base 64 auth,我的用户名和密码(管理员:密码)等于 - >基本QWRtaW46cGFzc3dvcmQ = 当我将它添加到我的标题管理器时: 授权基本QWRtaW46cGFzc3dvcmQ =
我的所有HTTP请求都成功。

在Jmeter中我用google搜索,我发现在Bean PreProcessor中添加如下:

auto it = lists.at(i).begin() // returns iterator to first element in i-th list in vector
...
*it // you can access value as if "it" was pointer
it++; // iterators can be "moved", that is, they will point to next element than before

的System.out.println(encodedUsernamePassword);

但系统输出给了我 - > [B @ 558e816b这是不正确的

当我将其添加到我的Header管理器中时,就像这样

授权基本$ {base64HeaderValue}

我的HTTP Req显然失败了。用于“管理员:密码的Base64应该是基本的QWRtaW46cGFzc3dvcmQ =而不是[B @ 558e816b

3 个答案:

答案 0 :(得分:0)

您正在尝试打印字节数组。您可以将新变量打印为:

 System.out.println(vars.get("base64HeaderValue"));

您的标题管理器也应 您的HTTP请求,以便在脚本和请求之前执行

您可以使用自定义函数的JMeter插件而不是scrpting,并在Header管理器中使用__base64Encode函数,类似于:

  ${__base64Encode(test string, base64HeaderValue)}

答案 1 :(得分:0)

要执行基本身份验证,只需根据此答案将HTTP Authorization Manager添加到您的计划中:

如果您的服务器网址为 http://localhost:8080/test ,则会进行如下配置:

Http Authorization Manager

此处无需编写脚本。

答案 2 :(得分:0)

我建议切换到JSR223 PreProcessor和Groovy语言:

  1. Groovy支持所有现代Java语言功能,包括(但不限于)

  2. Groovy performance is way better comparing to Beanshell
  3. Groovy相当于你的代码:

    vars.put('base64HeaderValue',(vars.get('Username') + ':' + vars.get('Password')).bytes.encodeBase64().toString())