当前位置: 首页 > 知识库问答 >
问题:

应用程序没有对jmeter脚本的虚拟用户进行身份验证,并且在日志中打印“AnonymousUser”

司空均
2023-03-14

我在badboy中录制了我的脚本,并在JMeter中进行了转换。我的脚本类似:在此处输入图像描述

为1个用户运行此脚本时,应用程序未对该用户进行授权,并在日志中引发以下异常:

debug:access.intercept.filtersecurityinterceptor-以前已通过身份验证的:org.springframework.security.authentication.anonymousauthenticationtoken@:principal:anonymouser;全权证书:[受保护];已认证:真实;详细信息:org.springframework.security.web.authentication.webauthenticationdetails@0:remoteipaddress:;SessionID:;已授予的权限:ROLE_ANONYMOUS debug:Access.vote.afirmativeBased-voter:org.springframework.security.Access.vote.rolevoter@514020c0,返回:-1 debug:Access.vote.afirmativeBased-voter:org.springframework.security.Access.vote.authenticatedvoter@502dc360,返回:0 debug:web.Access.exceptiontranslationfilter-访问被拒绝(用户是匿名的);重定向到身份验证入口点org.springframework.security.Access.accessdeniedexception:访问被拒绝

当我访问web应用程序并使用同一用户登录时,它将授权同一用户并在日志中打印以下跟踪:

debug:access.intercept.filterSecurityInterceptor-以前已通过身份验证:org.springframework.security.authentication.usernamePasswordAuthenticationToken@:principal:com.a.b.cd.user@6d513c13;全权证书:[受保护];已认证:真实;详细信息:com.a.b.c.d.e.userauthenticationdetails@0:RemoteIpAddress:;SessionID:;授予的权限:学习者调试:Access.Vote.AffirmativeBased-Voter:org.SpringFramework.Security.Access.Vote.RoleVoter@514020C0,返回:1调试:Access.Intercept.FilterSecurityInterceptor-授权成功调试:Access.Intercept.FilterSecurityInterceptor-RunAsManager未更改身份验证对象

但是在JMeter中,我的测试没有标记为fail,所有的采样器都成功并返回200。

谁能帮帮我!多谢了。

共有1个答案

尤夕
2023-03-14

记录和重放并不是一个能在100%的时间内起作用的东西,很可能您将不得不手动“调优”您的脚本来执行相关和参数化。

  • 相关性:处理动态参数的过程(web应用程序开发人员将其用于跟踪用户状态或保护免受CSRF攻击),检测它们相当容易:只需记录您的测试2次,并比较记录的请求。需要将不同的值关联起来,即您需要使用正则表达式提取器从先前的响应中提取它们,并在下一个请求中使用生成的JMeter变量而不是硬编码值
  • 参数化:您不会使用1个虚拟用户运行负载测试,是吗?您应该使用与您要模拟的用户一样多的用户名/密码组合。通常,人们使用CSV数据集配置来保存这种类型的数据。同样,您需要用CSV文件中的变量替换记录的值

完成后,使用1-2个虚拟用户/迭代运行测试,并在View Results树侦听器中仔细检查请求和响应细节,以确保测试正常工作。

关于JMeter中的my test was not marked fail,JMeter将状态代码低于400的HTTP响应视为成功,因此,即使您有数百个以粗体和红色显示的异常,但HTTP状态代码是200-JMeter也会将结果标记为“绿色”。您可以使用响应断言为JMeter测试添加一些失败标准,例如,对于登录的用户文本,如欢迎,${username}是预期的,等等。

 类似资料: