AuthorizationServerConfigurerAdapter与WebSecurityConfigurerAdapter之间的区别

时间:2018-06-19 00:57:37

标签: java spring spring-boot spring-security

这些课程有什么区别?我知道WebSecurityConfigurerAdapter用于定制" security"在我们的应用程序上。

我做了什么:

public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
CustomUserDetailsService customUserDetailsService;

@Autowired
private JwtAuthenticationEntryPoint unauthorizedHandler;

但我不了解AuthorizationServerConfigurerAdapter的含义。

我读过几篇文章,但我没有得到它。

2 个答案:

答案 0 :(得分:9)

第一件事。 OAuth 2是一个授权框架。它允许第三方应用程序(客户端)代表资源所有者(用户)获得对HTTP服务的有限访问权限。 OAuth 2不是身份验证协议。

AuthorizationServerConfigurerAdapter 用于配置 OAuth授权服务器的工作方式

以下是可以配置的方面:

  • 受支持的赠款类型(例如授权码赠款)
  • 授权码服务,用于存储授权码
  • 令牌存储,用于存储访问和刷新令牌(例如JwtTokenStore)
  • 客户端详细信息服务,其中包含客户端配置
  • ...

WebSecurityConfigurerAdapter 用于配置 OAuth授权服务器的安全方式

或者换句话说,用户必须如何进行身份验证才能授予客户端对其资源的访问权限。

这可以是:

  • 表单身份验证
  • 通过身份提供商进行身份验证(Facebook登录)
  • ...

(我故意省略了一些细节,以使答案尽可能简单。)


具有内存令牌存储的授权服务器配置示例:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.tokenStore(tokenStore());
    }

    @Bean
    public TokenStore tokenStore() {
        return new InMemoryTokenStore();
    }

    ...

}

使用表单登录名的示例安全配置:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/login").permitAll()
                .antMatchers("/oauth/authorize").authenticated()
                .and()
            .formLogin();
    }

    ...

}

答案 1 :(得分:0)

如果要使用第三方身份验证器,则意味着同时使用OAuth,则必须在OAuth服务器端使用AuthorizationServerConfigurerAdapter和WebSecurityConfigurerAdapter。如果不是这样,WebSecurityConfigurerAdapter就足以进行普通身份验证