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

Spring Boot 3.1.5 Actuator安全配置失效:/health仍需登录求助

Spring Boot 3.1.5 Actuator Health端点权限配置问题解决

问题分析

你升级Spring Boot到3.1.5后,原有的Security配置失效,修改后的配置仍导致访问健康端点时出现登录表单,核心原因有两点:

  1. 配置逻辑错误:原2.5.x版本用requestMatcher(EndpointRequest.to("health"))让该FilterChain仅处理health端点,其他端点由默认配置管控;但你修改后的代码中anyRequest().permitAll()会放开所有请求权限,且未正确限定FilterChain的处理范围,导致与Spring Boot自动配置的Security规则冲突。
  2. 端点路径认知偏差:Spring Boot 3.x中Actuator端点默认带/actuator前缀,健康端点实际路径是/actuator/health,而非直接/health。

正确配置示例

方案1:拆分Actuator与应用请求的Security规则

创建两个SecurityFilterChain,分别管控Actuator端点和应用自身请求,逻辑更清晰:

@Bean
public SecurityFilterChain actuatorSecurityFilterChain(HttpSecurity http) throws Exception {
    http
        // 指定该FilterChain仅处理所有Actuator端点请求
        .securityMatcher(EndpointRequest.toAnyEndpoint())
        .authorizeHttpRequests(auth -> auth
            // 允许Health端点匿名访问
            .requestMatchers(EndpointRequest.to(HealthEndpoint.class)).permitAll()
            // 其他Actuator端点需身份认证
            .anyRequest().authenticated()
        );
    return http.build();
}

@Bean
public SecurityFilterChain appSecurityFilterChain(HttpSecurity http) throws Exception {
    http
        // 管控应用自身的所有请求,可根据实际需求调整权限规则
        .authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
    return http.build();
}

方案2:单一FilterChain精准匹配

若不需要拆分,也可在单个FilterChain中精准限定规则:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth
            // 允许Actuator的Health端点匿名访问
            .requestMatchers(EndpointRequest.to(HealthEndpoint.class)).permitAll()
            // 其他Actuator端点需认证
            .requestMatchers(EndpointRequest.toAnyEndpoint()).authenticated()
            // 应用自身请求按需配置,示例为全部允许
            .anyRequest().permitAll()
        );
    return http.build();
}

额外检查项

  1. 确认Actuator端点暴露配置:在application.properties或application.yml中确保已开启Health端点暴露:
management.endpoints.web.exposure.include=health
  1. 若仍出现登录表单,检查是否存在其他自定义Security配置类,或Spring Boot自动生成的默认用户(可通过spring.security.user.name/password配置自定义账号,生产环境不建议禁用默认认证)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:27:39