【问题标题】:Security on Acuator endpoints unintentionally disabledAcuator 端点的安全性意外禁用
【发布时间】:2016-02-19 14:30:59
【问题描述】:

我有一个安全配置非常简单的应用程序,但似乎无法保护 Actuator 端点。从我在 SO 其他地方读到的内容来看,禁用这些端点的安全性似乎并不简单,所以我很困惑,希望能在理解这里发生的事情方面得到一些帮助。

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig {
    @Autowired
    private DataSource dataSource;

    @Autowired
    private WebSecurityProperties properties;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.
                jdbcAuthentication()
                .dataSource(dataSource);
    }

    @Configuration
    @Order(0)
    public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
        @Autowired
        private WebSecurityProperties properties;

        @Override
        public void configure(HttpSecurity http) throws Exception {
            http
                    .csrf().disable()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                    .and()
                    .authorizeRequests()
                    .antMatchers("/web/**", "/example/**").hasRole(properties.getApiUserGroup())
                    .and()
                    .httpBasic();
        }
    }

    @Configuration
    public static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
        @Autowired
        private WebSecurityProperties properties;

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/index.html")
                    .permitAll()
                    .and()
                    .authorizeRequests()
                    .antMatchers("/**").hasRole(properties.getAdminGroup());
        }
    }
}

【问题讨论】:

    标签: spring-boot-actuator


    【解决方案1】:

    好的,我的配置似乎有几个问题。

    • 使用@EnableWebSecurity 注释。显然这会禁用 Spring Boot 默认值。根据dsyer,“如果您使用@EnableWebSecurity,您将完全关闭Spring Boot 设置”
    • 未能指定order of the configuration application。具体来说,我没有在班级级别声明@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)

    作为实现此功能的一部分,我简化了配置并最终得到了这样的结果:

    @Configuration
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Autowired
        private DataSource dataSource;
    
        @Autowired
        private WebSecurityProperties properties;
    
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth.
                    jdbcAuthentication()
                    .dataSource(dataSource);
       }
    
        @Override
        public void configure(HttpSecurity http) throws Exception {
            http.csrf().disable()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                .authorizeRequests()
                    .antMatchers("/web/**", "/example/**").hasRole(properties.getApiUserGroup())
                    .antMatchers("/index.html").permitAll().and()
                .httpBasic().realmName("API example");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2018-10-07
      • 1970-01-01
      • 2019-12-28
      • 2019-03-30
      • 2015-05-10
      • 2023-03-03
      • 2019-02-17
      • 2015-12-24
      相关资源
      最近更新 更多