You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JMeter对Spring Boot Thymeleaf MVC应用压测时认证失败求助

解决JMeter压测Spring Boot MVC Basic认证失效问题

问题核心

你遇到的关键问题是:JMeter的HTTP Authorization Manager在Spring Boot MVC应用上未生效,返回登录页而非预期内容。对比httpbin能正常认证的情况,差异在于Spring Boot MVC默认的表单登录流程会直接重定向到登录页(返回3xx状态码),不会返回401 Unauthorized触发JMeter的被动认证机制,而REST服务如httpbin会返回401并携带WWW-Authenticate头,能正常触发JMeter的认证逻辑。

解决方案

1. 确认Spring Security启用Basic认证

首先检查你的Spring Security配置类,必须显式启用Basic认证支持,否则应用会默认走表单登录流程:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            // 强制启用Basic认证
            .httpBasic()
                .and()
            // 若需保留前端表单登录,可同时启用,但压测优先用Basic
            .formLogin();
    }
}

2. 让JMeter主动发送Authorization头

由于Spring Boot可能直接重定向,JMeter的Authorization Manager不会自动触发认证,需要手动添加请求头:

  • 在HTTP请求采样器下添加HTTP Header Manager
  • 添加头字段:
    • 名称:Authorization
    • 值:Basic [Base64编码的用户名密码]
      编码规则:将用户名:密码拼接后做Base64编码,比如你的11118:Aa@12345编码后为MTExMTg6QWFAMTIzNDU=,也可通过JMeter内置函数生成:${__base64Encode(11118:Aa@12345,)}

3. 调整JMeter重定向设置

暂时关闭HTTP请求的Follow Redirects选项:

  • 如果返回401 Unauthorized且带有WWW-Authenticate头,说明Basic认证配置正常,可重新开启重定向;
  • 如果仍重定向到登录页,说明Spring Security未正确启用Basic认证,回到步骤1检查配置。

4. 优化HTTP Authorization Manager配置(可选)

若坚持使用Authorization Manager,需修正两个配置点:

  • Realm字段:填写Spring Security配置的Realm名称(默认是Realm,可通过.httpBasic(realmName = "自定义Realm")设置)
  • URL匹配规则:改为更精确的路径,比如http://10.14.4.49:9094/*,避免模糊匹配导致的规则不生效

验证方法

在JMeter的View Results Tree中查看:

  • 请求头是否包含Authorization字段,确认认证信息已发送;
  • 响应状态是否为200,且返回内容是预期页面,而非登录页。

内容的提问来源于stack exchange,提问作者Black Swan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:07:34