我已经为我的REST API配置了Spring Security(使用HeaderHttpSessionStrategy)。
我的WebSecurityConfigurerAdapter'实现如下所示。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/user/**").authenticated()
.antMatchers("/**").permitAll()
.and()
.requestCache()
.requestCache(new NullRequestCache())
.and()
.httpBasic()
;
}
现在,我该如何配置' HttpSecurity'对象,以便只有特定端点才能进行基本身份验证。
例如:
/ user / login :只能在此端点进行基本身份验证。在成功验证后,将返回x-auth-token标头。
/ user / create :客户端无法在此端点上进行身份验证。只能返回401.Can只能使用' x-auth-token'使用/ user / login端点创建。
答案 0 :(得分:6)
您可以定义多个WebSecurityConfigurerAdapter
。优先级较高的一个,它具有一个请求匹配器,可以将适用性限制为/user/login
,如:http.requestMatcher(new AntPathRequestMatcher("/user/login"))
,另一个优先于其余部分。您可以省略requestMatcher
以使http定义不受限制。
答案 1 :(得分:0)
您必须始终定义从特定到通用的限制。在您的情况下,它应该是对通用安全检查的特定URL检查。
您应该最终应用更多通用限制,例如您在URL,/ user / **上提到的要进行身份验证并具有某些角色的限制。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/user/login, /user/signup, /logout").permitAll()
.antMatchers("/user/**").hasRole("ADMIN")
.and()
.requestCache()
.requestCache(new NullRequestCache())
.and()
.httpBasic();
}