基本安全性没有使用Spring Boot

时间:2014-09-04 20:41:03

标签: spring spring-security spring-boot

我正在尝试使用基本身份验证设置一个vanilla Spring Boot环境。

基本上我唯一要定制的是用户,受保护路径和自定义密码编码器。

Spring Boot文档说明:

  

在不更改任何其他自动配置的情况下覆盖访问规则   功能添加WebConfigurerAdapter类型的@Bean   @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)。

注意:我认为WebConfigurerAdapter应该是WebSecurityConfigurerAdapter。

所以我尝试了以下内容:

protected static class ApplicationSecurity extends WebSecurityConfigurerAdapter {

    @Autowired
    private PasswordEncoder passwordEncoder;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .authorizeRequests()
                .antMatchers("/assets/**").permitAll()
                .antMatchers("/api/**").hasRole("USER")
                .antMatchers("/management/**").hasRole("ADMIN");
        // @formatter:on
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // @formatter:off
        auth
            .inMemoryAuthentication()
                .passwordEncoder(passwordEncoder)
                .withUser("admin")
                    .password(passwordEncoder.encode("pwd"))
                    .roles("USER", "ADMIN")
                    .and()
                .withUser("user")
                    .password(passwordEncoder.encode("pwd"))
                    .roles("USER");
        // @formatter:on
    }
}

默认的Boot安全性似乎正是我想要的:

security.enable-csrf=false
security.basic.enabled=true 
security.sessions=stateless

但是,当我运行应用程序时,基本身份验证不起作用。

当我使用http.httpBasic()在我的WebSecurityConfigurerAdapter中显式配置它时,如:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .httpBasic()
                .and()
            .authorizeRequests()
                .antMatchers("/assets/**").permitAll()
                .antMatchers("/api/**").hasRole("USER")
                .antMatchers("/management/**").hasRole("ADMIN");
        // @formatter:on
    }

然后基本身份验证正在运行。

因此上面的初始设置似乎没有采用默认配置。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

每个WebSecurityConfigurer都有自己的过滤器链,其中包含自己的请求匹配器和安全规则。添加WebSecurityConfigurer(对于文档中的拼写错误抱歉)并不会更改默认的启动自动配置过滤器链,但它对自己的过滤器链也没有任何魔力。您需要告诉Spring Security如何保护这些资源 - 您为其提供了访问规则但没有认证策略。有意义吗?