应用程序未验证jmeter脚本的虚拟用户,并在日志中打印“anonymousUser”

时间:2017-03-16 05:19:59

标签: authentication spring-security jmeter badboy

我在badboy中录制了我的脚本并将其转换为JMeter。我的脚本像: enter image description here

为1个用户运行此脚本时,应用程序不会授权用户并在日志中抛出异常:

DEBUG:access.intercept.FilterSecurityInterceptor - 以前经过身份验证:org.springframework.security.authentication.AnonymousAuthenticationToken @:Principal:anonymousUser;证书:[保护];认证:真实;详细信息:org.springframework.security.web.authentication.WebAuthenticationDetails@0:RemoteIpAddress :; SessionId :;授权机构:ROLE_ANONYMOUS DEBUG:access.vote.AffirmativeBased - Voter:org.springframework.security.access.vote.RoleVoter@514020c0,返回:-1 DEBUG:access.vote.AffirmativeBased - 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 @:校长:com.A.B.C.D.User@6d513c13;证书:[保护];认证:真实;详情:com.A.B.C.D.E.UserAuthenticationDetails@0:RemoteIpAddress :; SessionId :;授权机构:LEARNER DEBUG:access.vote.AffirmativeBased - Voter:org.springframework.security.access.vote.RoleVoter@514020c0,返回:1 DEBUG:access.intercept.FilterSecurityInterceptor - 授权成功 DEBUG:access.intercept.FilterSecurityInterceptor - RunAsManager没有更改身份验证对象

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

有谁可以帮助我!感谢。

1 个答案:

答案 0 :(得分:0)

记录和重播不会在100%的时间内起作用,很可能你必须手动调整"您的脚本执行关联和参数化。

  • 相关性:处理动态参数的过程(Web应用程序开发人员将它们用于tracking user status or protecting from CSRF attacks),检测它们非常简单:只记录您的测试2次并比较记录的请求。不同的值需要相关,即您需要使用Regular Expression Extractor从之前的响应中提取它们,并在下一个请求中使用生成的JMeter变量而不是硬编码值
  • 参数化:您不打算用1个虚拟用户运行负载测试,对吗?您应该使用尽可能多的用户名/密码组合,就像您要定位的模仿用户一样多。通常人们使用CSV Data Set Config来保存此类数据。同样,您需要使用CSV文件中的变量替换记录的值

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

关于in JMeter my test was not marked fail,JMeter将状态代码低​​于400的HTTP响应视为成功,因此即使您有数百个粗体和红色的异常,但HTTP状态代码为200 - JMeter将标记结果&# 34;绿色&#34 ;.您可以使用Response Assertion向JMeter测试添加一些失败条件,即用于预期的Welcome, ${username}等已登录用户文本等。