У меня есть защищенное приложение 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 любой запрос аутентифицирован , как указано выше, и который голосует за отклонение запроса.
Может кто-то уточнить, почему перехватчик безопасности не ' • делегировать провайдеру аутентификации вообще, чтобы определить, следует ли удовлетворить запрос? И может ли кто-нибудь указать мне, как решить эту проблему?