WebSecurityConfigurerAdapter和ResourceServerConfigurerAdapter区别

默认继承了WebSecurityConfigurerAdapter之后,再加上几行代码,我们就能实现以下的功能:

  • 1、要求用户在进入你的应用的任何URL之前都进行验证
  • 2、创建一个用户名是“user”,密码是“password”,角色是“ROLE_USER”的用户
  • 3、启用HTTP Basic和基于表单的验证
  • 4、Spring Security将会自动生成一个登陆页面和登出成功页面

这样他就提供基于web的security, 安全服务配置URL强制拦截保护服务,可以配置哪些路径不需要保护,哪些需要保护,它与ResourceServerConfigurerAdapter区别在于:

  • WebSecurityConfigurerAdapter是默认情况下spring security的http配置,
    ResourceServerConfigurerAdapter是默认情况下spring security oauth2的http配置

  • ResourceServerConfigurerAdapter被配置为不同的端点(参见antMatchers),而WebSecurityConfigurerAdapter不是。

  • RealServServer配置适配器使用一个特殊的过滤器来检查请求中的承载令牌,以便通过OAuth2对请求进行认证。而WebSecurityConfigurerAdapter适配器用于通过会话对用户进行身份验证(如表单登录)

WebSecurityConfigurerAdapter部分源码如下:

    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
       ...
    }
    public void configure(WebSecurity web) throws Exception {
    }
    protected void configure(HttpSecurity http) throws Exception {
        ...
    }
    ...
}

ResourceServerConfigurerAdapter部分源码如下:

public class ResourceServerConfigurerAdapter implements ResourceServerConfigurer {
    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
    }
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().authenticated();
    }
}

在ResourceServerProperties中,定义了它的order默认值为SecurityProperties.ACCESS_OVERRIDE_ORDER - 1;,是大于100的,即WebSecurityConfigurerAdapter的配置的拦截要优先于ResourceServerConfigurerAdapter,优先级高的http配置是可以覆盖优先级低的配置的。
某些情况下如果需要ResourceServerConfigurerAdapter的拦截优先于WebSecurityConfigurerAdapter需要在配置文件中添加

security.oauth2.resource.filter-order=99

或者重写WebSecurityConfigurerAdapter的Order配置,如下:

@Configuration
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    ...
}

你可能感兴趣的:(WebSecurityConfigurerAdapter和ResourceServerConfigurerAdapter区别)