soupUI解决md5加密签名,cookie传递
问题详情:
1、接口调用需要前提状态:登录状态(cookie)
2、接口请求需要签名,签名规则为:MD5(TokenKey+apikey+timestamp+nonc)
其中
1、TokenKey、apikey为接口构造方提供(永久不变);
2、nonc为随机数,自定义
3、timestamp 为 时间戳(百度百科)
对应解决办法:
1、登录获取cookie;
- 登录接口
- meiad type :application/x-www-form-urlencoded; charset=UTF-8
- 获取response data (cookie);test steps 中添加 Groovy Script ,其内容如下:
"""
import com.eviware.soapui.support.types.StringToStringMap
def cookiesList = testRunner.testCase.getTestStepByName("Login - Request 1").testRequest.response.responseHeaders["Set-Cookie"][0]
cookiesList = cookiesList[0..-29] +"IsClosePwdWeak=0"
log.info cookiesListreturn cookiesList
"""
- 外部引用方法:${(Groovy Script 命名)#result} eg:${cookie_data#result}
2、获取时间戳timestamp;
- test steps 中添加Groovy Script ,其内容如下:
"""
time = (new Date().time / 1000).intValue()
log.info time
return time"""
外部引用方法:${(Groovy Script 命名)#result} eg:${timestamp#result}
3、获取签名sign;
- 签名关键点为MD5加密,先构建加密方式;test steps 中添加 Groovy Script ,其内容如下:
"""
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmExceptionpublic static String md5Password(String password) {
try {
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] result = digest.digest(password.getBytes());
StringBuffer buffer = new StringBuffer();for (byte b : result) {
int number = b & 0xff;
String str = Integer.toHexString(number);
if (str.length() == 1) {
buffer.append("0");
}
buffer.append(str);
}return buffer.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}def apiKey = context.expand( '${Properties#apiKey}' )
def tokenKey = context.expand( '${Properties#TokenKey}' )
def nonc = context.expand( '${Properties#nonc}' )
def timestamp = context.expand( '${time#result}' )md5_data= md5Password(tokenKey+apiKey+timestamp+nonc) //按照开发人员提供的签名组成规则,组成签名
log.info md5_data
return md5_data"""
- 固定值TokenKey、apikey以及自定义值nonc的存放于参与签名组成;
- test steps 中添加 Properties;添加对应key,value;
- Groovy Script 脚本引用方法:
- 外部引用方法${(Properties命名)#(key)} eg:${Properties#apiKey}
4、构建目标接口
soupUI解决md5加密签名,cookie传递的更多相关文章
- postman headers 请求参数和MD5加密签名
postman 变量可以这样写:{{timestamp}} ,也可以用系统的,{{$timestamp}},这样就不用给自己赋值了,但在 pre-requestScript中是获取不到这个值的 所以我 ...
- Jmeter Md5加密操作之-------BeanShell PreProcessor
背景: 有一些登录会做一些md5校验,通过jmeter的BeanShell可以解决MD5加密情况. 1.首先需要一个解码的jar包,commons-codec-1.10.jar(网上很多),下载后,放 ...
- Jmeter(十九) Md5加密操作之-------BeanShell PreProcessor(转载)
转载自 http://www.cnblogs.com/yangxia-test 背景: 有一些登录会做一些md5校验,通过jmeter的BeanShell可以解决MD5加密情况. 1.首先需要一个解码 ...
- 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)
正常情况下使用md5加密 var crypto = require('crypto'); var md5Sign = function (data) { var md5 = crypto.create ...
- md5加密用户登陆遇到的问题及解决办法
有个项目的登陆模块使用到了cas,应需求要求,用户名和密码传输时使用了md5加密模式,加密的密码可以直接保存在数据库,但是加密的用户名则必须解密出来才行,于是后台的java代码中便写了针对用户名的解密 ...
- md5加密,同样的代码得到不同的加密结果(已解决)
场景: 开发环境(windows下)调用第三方接口验签通过,发测试环境(linux下)后死活验签通过不了 原因: md5是一项成熟的加密技术,问题应该在代码里,查了查感觉可能是字符编码的问题,导致加签 ...
- python 应用 base64、hmac、hashlib包实现:MD5编码 base64编码解码、SHA256编码、urlsafe_b64encode编码等等基本所有的加密签名的方法
用python做HTTP接口自动化测试的时候,接口的很多参数是经过各种编码加密处理后在传到后台的,这里列举出python实现 应用 base64.hmac.hashlib包实现:md5编码 sha1编 ...
- js进行MD5加密(含中文),与后台JAVA加密之后结果不同(解决)
开发小程序过程中与后台进行接口沟通,前期接口经过MD5加密和AES加密之后,后台进行解密. 今天出现一种情况,我前台加密之后的md5串与后台加密不同,后台发现可能是带用中文的原因, 这是加密之前的串: ...
- Delphi编码与签名【URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1、HMAC-SHA224、HMAC-SHA256、HMAC-SHA384和HMAC-SHA512签名】
作者QQ:(648437169) 点击下载➨delphi编码与签名 [Delphi编码与签名]URL编码与解码,Base64编码与解码,MD5加密,HMAC-SHA1.HMAC-SHA224.HMAC ...
随机推荐
- swift中block的使用
在OC中习惯用block来传值,而swift中,block被重新定义了一下,叫闭包: 使用的技巧:谁定义谁传值: 案例使用A.B控制器: 1~4步在B中执行,最后在A中执行: - B控制器: 1- ...
- NCRE Java二级备考方案
一 配合大纲梳理基本知识点 二 多在233网校刷题
- PAT 2019 秋
考试的还行.不过略微有点遗憾,但是没想到第一题会直接上排序和dfs,感觉这次的题目难度好像是倒着的一样.哈哈哈哈. 第一题实在是搞崩心态,这道题给我的感觉是,可以做,但事实上总是差点啥. 第二题,第三 ...
- POJ 2362:Square 觉得这才算深度搜索
Square Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 21821 Accepted: 7624 Descripti ...
- c 转二进制
int nData = 1568;//转二进制 for (int i = sizeof(int) * 8 - 1; i >= 0; i--){ if ((nData >>i) &am ...
- python clickZan
import pyautogui,time,random pyautogui.PAUSE = 3 pyautogui.FAILSAFE = True width, height = pyautogui ...
- JS-语句三
关于if语句的几个练习: 1. 输入三个整数,x,y,z,最终以从小到大的方式输出. 思路:先列举出每种可能,然后做if套嵌. var x = prompt("请输入一个数字 ...
- C#调用C++系列二:传结构体
这一篇记录下C#调用C++的结构体的方式来使用OpenCV的数据格式,这里会有两种方式,第一种是C#传一个结构体和图像的路径给C++,然后C++将图像加载进来,再把传进来的结构体填满即可,第二种是C# ...
- 刷题46. Permutations
一.题目说明 题目是46. Permutations,给一组各不相同的数,求其所有的排列组合.难度是Medium 二.我的解答 这个题目,前面遇到过类似的.回溯法(树的深度优先算法),或者根据如下求解 ...
- WOJ 1542 Countries 并查集转化新点+最短路
http://acm.whu.edu.cn/land/problem/detail?problem_id=1542 今天做武大的网赛题,哎,还是不够努力啊,只搞出三个 这个题目一看就是个最短路,但是题 ...