s-HR Cloud性能测试登录脚本制作

栏目:s-hr cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

s-HR Cloud性能测试登录脚本制作

【适用版本】 

   s-HR Cloud 9.0版本以上


【问题场景】

使用Jmeter制作s-HR登录脚本


【解决方案】

s-HR使用的EAS SSO,登录步骤与EAS portal一致,需要注意的是现在EAS SSO采用了RSA非对称加密来加密请求中的部分登录信息。

在做性能测试之前需要将登陆时的验证码屏蔽,不然将无法登录成功。

登录页验证码屏蔽方法参考:https://vip.kingdee.com/article/622443139872872704


使用Jmeter录制好登录请求后,可以看到所有的请求参数都是固定的,过一段时间请求就无法使用了。

所以这里需要对请求参数进行参数化,和RSA加密。

需要参数化的参数有:数据库名,用户名,密码,easSessionId(提取自登录页),lt(提取自登录页)

需要加密的主要参数有:数据库名(Base64),用户名(RSA),密码(RSA),easSessionId(RSA),lt(Base64)

需要特别注意的参数:dbType,数据库类型,这个需要根据实际情况填入对应的数字

这里给出一些常用数据库对应的数字:Sqlserver — 3 , Oracle — 2 , Postgresql — 5 , Kingbase — 12


参考最后完成修改的请求参数的样子:


加密方法:

如上图所示,除去用户名和密码外,大多数参数直接使用Jmeter自带函数__base64Encode进行加密即可

用户名和密码需要使用JSR223处理器来模拟RSA加密

JSR223处理器中脚本语言选择groovy,随后加入Java代码


引入必要的库

import javax.crypto.*;

import java.security.*;

import java.security.spec.*;

import java.util.Base64;


获取需要加密的参数的值,赋值给Java变量,publickey为从登录页提取的公钥

String sUser = vars.get("username");

String sPass = vars.get("password");

String sKey = vars.get("publickey"); 

sKey = sKey.replace("\n", "").replace("\r", "");


初始化加密类

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

PublicKey pubkey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(sKey.getBytes())));

cipher.init(Cipher.ENCRYPT_MODE, pubkey);


对用户名、密码进行加密,并将密文存入enU、enP参数

vars.put("enU", new String(Base64.getEncoder().encode(cipher.doFinal(Base64.getEncoder().encode(sUser.getBytes())))));

vars.put("enP", new String(Base64.getEncoder().encode(cipher.doFinal(Base64.getEncoder().encode(sPass.getBytes())))));



s-HR Cloud性能测试登录脚本制作

【适用版本】 s-HR Cloud 9.0版本以上【问题场景】使用Jmeter制作s-HR登录脚本【解决方案】s-HR使用的EAS SSO,登录步骤与EAS port...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息