我有一个受保护的Spring应用程序,在其中配置了以下内容:
public static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
...
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable()
.authenticationProvider(myCustomProvider)
.authorizeRequests()
.anyRequest().authenticated();
}
}
myCustomProvider
被自动连接到适配器,目前仅是一个“ hello world”身份验证提供程序。
当我向应用程序中的端点发送请求时,我收到403禁止响应,响应正文简单地说“访问被拒绝”。当我向身份验证提供程序添加断点时,它没有被击中。
我看到org.springframework.security.web.access.intercept.FilterSecurityInterceptor
是拒绝访问的原因,特别是AbstractSecurityInterceptor
中的一行:
this.accessDecisionManager.decide(authenticated, object, attributes);
有一个AccessDecisionVoter,它与WebSecurityConfigurerAdapter表达式已认证的任何请求相对应,并投票拒绝该请求。
有人可以阐明为什么安全拦截器根本不委托身份验证提供者来确定是否应批准该请求吗?谁能向我指出如何解决此问题?