无法访问Spring Boot Actuator端点,如何实现免令牌访问?
无需令牌访问Spring Boot Actuator端点的解决方案
你可以通过配置Spring Security放行Actuator端点,跳过令牌认证,以下是几种可行方案:
方案1:配置文件快速放行(适用于Spring Boot 2.3及更早版本)
在application.properties中添加以下配置,直接忽略Actuator端点的安全校验:
spring.security.ignored=/actuator/**
注意:该配置在Spring Boot 2.4及以上版本已被弃用,推荐使用代码配置方式。
方案2:编写Spring Security配置类(推荐,适配所有新版本)
创建自定义Security配置类,明确放行Actuator端点,同时保留其他接口的令牌认证逻辑:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http // 放行所有Actuator端点 .authorizeHttpRequests(auth -> auth .requestMatchers("/actuator/**").permitAll() // 其他所有请求仍需令牌认证 .anyRequest().authenticated() ) // 保留你原有的令牌认证配置(比如JWT、OAuth2等) .oauth2ResourceServer(oauth2 -> oauth2.jwt()); // 示例为JWT认证,根据实际情况替换 return http.build(); } }
方案3:细粒度控制(仅放行指定Actuator端点)
如果不想开放所有端点,只放行特定的(比如健康检查、指标),可以修改requestMatchers的路径:
.requestMatchers("/actuator/health/**", "/actuator/metrics/**").permitAll()
生产环境安全建议
直接开放所有Actuator端点存在安全风险,建议:
- 仅放行必要的端点(如
health、metrics) - 结合IP白名单限制访问来源,例如在配置类中添加:
.requestMatchers("/actuator/**").hasIpAddress("127.0.0.1", "你的服务器IP")
内容的提问来源于stack exchange,提问作者Ballazx
相关产品推荐
相关产品推荐

