jmeter常规鉴权
jemter测试外部接口
外部接口一般都会有鉴权逻辑,在jmeter中用beanshell脚本生成,需要的数据
常规鉴权流程
例如:公用参数companyId,timestamp,randomStr,sign
每个接口都需要使用公用参数
另外有一个加密key
流程:
- 把除了sign以外所有参数,按字典序排序后,拼接成字符串str,示例:key1=val1&key2=val2
- 把步骤1得到的字符串str做base64编码得到字符串base64String(编码时定字符集为utf-8)
- 使用 作为加密key对base64String做HMAC-SHA1哈希,得到字节数组hmacSha1byte
- 把步骤3得到的字节数组hmacSha1byte做md5得到32位字符串,并转换为大写,即为签名sign
companyId和加密key是后台提供,固定的,所以添加到用户自定义变量中
直接上代码
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.net.util.Base64;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
String timestamp = "${__time()}"; //生成时间戳