我的WebSecurityConfigurerAdaptor
中有以下内容:
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login.jsp").permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling()
.accessDeniedPage("/login.jsp?authorization_error=true")
.and()
.csrf()
.disable()
.formLogin()
.loginProcessingUrl("/login")
.loginPage("/login.jsp")
.failureUrl("/login.jsp?authentication_error=true");
}
我有一个OAuth2客户端(用PHP编写),可以在获取有效的访问令牌之前重定向到/ login。
然后我尝试启用ResourceServerConfigurerAdapter
:
@Configuration
@EnableResourceServer
protected static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(ResourceServerSecurityConfigurer resources)
throws Exception {
resources.resourceId("myResource").stateless(false);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
.and()
.requestMatchers()
.antMatchers("/me")
.and()
.authorizeRequests()
.antMatchers("/me").access("#oauth2.hasScope('email')");
}
}
启用ResourceServer
后,永远不会调用UsernamePasswordAuthenticationFilter
,并且/ login会返回HTTP 404错误。
我多次阅读示例Spring OAuth2应用程序sparklr2和tonr2,但我无法弄清楚我的代码有什么问题。
答案 0 :(得分:2)
追踪是一个非常困难的错误。
我的代码最初使用的是Spring Security版本4.0.2.RELEASE和Spring版本4.2.2.RELEASE。一旦我改变我的maven pom.xml以使用Spring Security版本3.2.8.RELEASE和Spring版本4.1.8.RELEASE,我的代码就可以了。
可能与以下错误有关: resource server security custom request matching ignored