如何修改SecurityFilterChain以仅允许指定IP访问并保留原有功能
修改Spring Security配置以限制IP访问并保留原有认证规则
要实现仅允许负载均衡器IP和开发者IP访问,同时保留/actuator/**端点的HTTP Basic认证、其余页面无需认证的功能,可以通过在原有配置基础上添加IP白名单过滤规则来实现,具体修改如下:
修改后的完整配置代码
@Configuration @EnableWebSecurity public class SecurityConfig { // 定义允许访问的IP列表:负载均衡器IP + 开发者IP private static final String[] ALLOWED_IPS = { "192.168.1.100", // 替换为你的负载均衡器IP "10.0.0.5" // 替换为开发者IP,可添加多个 }; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http .csrf(AbstractHttpConfigurer::disable) .cors(AbstractHttpConfigurer::disable) .authorizeHttpRequests(auth -> { // 第一步:限制所有请求必须来自白名单IP auth.anyRequest().hasAnyIpAddress(ALLOWED_IPS); // 第二步:保留原有规则:/actuator/**需要认证,其余请求放行 auth.requestMatchers("/actuator/**").authenticated(); auth.anyRequest().permitAll(); }) .httpBasic(withDefaults()) .build(); } }
关键修改说明
- IP白名单定义:将允许访问的IP地址放入
ALLOWED_IPS数组,支持添加多个IP(包括IPv4、IPv6格式,或IP段如192.168.1.0/24)。 - 规则顺序:Spring Security的权限规则按配置顺序匹配,因此先添加IP限制规则,确保所有请求首先经过IP校验,只有白名单内的IP才能进入后续权限校验。
- 原有功能保留:IP校验通过后,继续保留原有的
/actuator/**需认证、其余页面放行的规则,完全兼容原有业务逻辑。
内容的提问来源于stack exchange,提问作者Ar_
相关产品推荐
相关产品推荐

