在发送请求之前散列和编码变量

Mik*_* LP 3 scripting base64 jmeter sha256

我正在尝试设置JMeter以连接到一个服务,该服务需要在开始之前和中间请求之前对某些变量进行一些散列.

我创建了一个用户定义的变量,它具有纯文本的身份验证信息.
在调用第一个HTTP请求之前,我需要使用SHA256散列密码,使用base64对其进行编码,然后转换为大写.

我将收到auth_token一个JSON格式化的响应机构.然后我需要对SHA256 -> base64 -> uppercaseauth_token 执行相同的链,从那时起它将在请求头中使用.

Ali*_*lik 5

  1. 如果您没有实现资源关键方案(负载测试),您可以使用例如JSR223 Sampler/JSR223 PostProcessor/JSR223 PreProcessor和一些代码.

    例如

    • 使用带有以下[groovy]代码的JSR223 Sampler/PostProcessor/PreProcessor:
    import java.security.MessageDigest;
    import org.apache.commons.codec.binary.Base64;
    import org.testng.annotations.Test;
    
    String [] params = Parameters.split(",");
    
    String text = params[0];
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    
    md.update(text.getBytes("UTF-8"));
    byte[] digest = md.digest();
    
    byte[] encoded = Base64.encodeBase64(digest);
    String encText = (new String(encoded)).toUpperCase();
    
    vars.put("encodedValue",encText);
    
    • 您可以重复使用此采样器来密码password和auth_token - 通过JSR223采样器配置中的"参数"字段:${password}在第一种情况下使用eg 变量,auth_token在第二种情况下使用- .

    • 散列值可以作为${encodedValue}变量引用.

  2. __groovy函数一起使用的类似groovy代码.

  3. JMeter的-插件集包含${__MD5(...)},${__base64Encode(...)},${__uppercase(...)} 功能,但是这还不够,你的情况下(无SHA256摘要).

  4. 您还可以查看OS Process Sampler,以使用您的操作系统(非常好的Linux)功能实现相同的功能.