使用WebSecurityConfigurerAdapter的@ManagementContextConfiguration不起作用

问题描述 投票:0回答:1

我有一个有效的Spring Boot 1.x应用程序,配置了不同的管理端口和安全性(Basic Auth)。迁移到Spring 2.1后,它不再起作用了。

看代码:

@ManagementContextConfiguration公共类ManagementConfig {

@EnableWebSecurity
@Order(SecurityProperties.BASIC_AUTH_ORDER)
static class SecurityConfig extends WebSecurityConfigurerAdapter {

  public SecurityConfig() {
    super(true);  // disable defaults
  }

  @Override
  protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
        auth.inMemoryAuthentication()
          .withUser("admin")
          .password(encoder.encode("admin"))
          .roles(Collections.emptyList().toArray(new String[]{}));
  }

  @Override
  protected void configure(HttpSecurity http) throws Exception {
      RequestMatcher matcher = new AntPathRequestMatcher("/**");

      http
        .authorizeRequests()
          .requestMatchers(matcher).authenticated();
    }
  }
}

我的spring.factories包含

org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration=\
  com.test.config.ManagementConfig

在使用期间,我可以看到SecurityConfig实例已创建,但没有调用configure()方法(正如我所见,在ManagementConfig创建后,Spring Boot 1.x中有一个后处理器调用...)。

我的application.yml包含:

management.server:
  address: localhost
  port: 18543
  security: 
    enabled: true

它的问题是,我现在可以简单地访问任何管理端点

curl http://localhost:18543/info
spring-security spring-boot-actuator
1个回答
0
投票

我已经解决了这个问题,将@ManagementContextConfiguration和@EnableWebSecurity分成2个不同的文件。

© www.soinside.com 2019 - 2024. All rights reserved.