使用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
答案 0 :(得分:3)
Spring Actuator自动配置Spring Security,但是当我添加上面提到的配置时,它添加了它并没有删除Spring Actuator添加的配置。
解决方案:通过将以下内容添加到应用程序属性文件中来禁用Spring Actuator添加的安全性:security.basic.enabled=false