为什么Spring Security Java Config AntMatcher没有阻止此URL?

时间:2014-01-14 20:43:37

标签: java spring spring-mvc spring-security

使用Spring Boot和Spring Security我配置了一个超级简单的应用程序,并根据URL添加了安全性,但它不受尊重。例如,如果我以'scout'身份登录并点击/api/leaders等管理员网址,我仍然可以看到它。

我尝试了很多网址的排列,即使尝试anyRequest().denyAll()scout用户仍可以访问它。

@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.ssoward.scouts"})
public class MainConfiguration {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(MainConfiguration.class, args);
    }

    //security
    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    static class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
        @Override
        @Bean
        public AuthenticationManager authenticationManagerBean() throws Exception {
            return authenticationManager();
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
                    .antMatchers("/api/leaders*").hasRole("ADMIN") //url level security
                    .antMatchers("/api/scouts*").hasRole("USER");   //url level security
        }

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication()
                    .withUser("leader").password("password").roles("USER", "ADMIN").and()
                    .withUser("scout").password("password").roles("USER");
        }
    }
}

整个项目在Github:https://github.com/ssoward/scouts

1 个答案:

答案 0 :(得分:3)

Spring Actuator自动配置Spring Security,但是当我添加上面提到的配置时,它添加了它并没有删除Spring Actuator添加的配置。

解决方案:通过将以下内容添加到应用程序属性文件中来禁用Spring Actuator添加的安全性:security.basic.enabled=false