这些课程有什么区别?我知道WebSecurityConfigurerAdapter用于定制" security"在我们的应用程序上。
我做了什么:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
CustomUserDetailsService customUserDetailsService;
@Autowired
private JwtAuthenticationEntryPoint unauthorizedHandler;
但我不了解AuthorizationServerConfigurerAdapter的含义。
我读过几篇文章,但我没有得到它。
答案 0 :(得分:9)
第一件事。 OAuth 2是一个授权框架。它允许第三方应用程序(客户端)代表资源所有者(用户)获得对HTTP服务的有限访问权限。 OAuth 2不是身份验证协议。
AuthorizationServerConfigurerAdapter 用于配置 OAuth授权服务器的工作方式。
以下是可以配置的方面:
WebSecurityConfigurerAdapter 用于配置 OAuth授权服务器的安全方式。
或者换句话说,用户必须如何进行身份验证才能授予客户端对其资源的访问权限。
这可以是:
(我故意省略了一些细节,以使答案尽可能简单。)
具有内存令牌存储的授权服务器配置示例:
@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就足以进行普通身份验证