Запрет Spring Boot от регистрации одного из фильтров Spring Security

Я хотел бы отключить один из фильтров Spring Security в цепочке безопасности.

Я уже виделаЗапрет Spring Boot от регистрации фильтра сервлетов Вопрос - и принято, должно работать, но, к сожалению, нет.

С кодом:

    @Bean
    public FilterRegistrationBean registration(AnonymousAuthenticationFilter filter) {
        FilterRegistrationBean registration = new FilterRegistrationBean(filter);
        registration.setEnabled(false);
        return registration;
    }

Spring Boot незамедлительно объявит об отсутствии подходящего компонента, что печально:

Вызвано: org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден квалифицирующий компонент типа [org.springframework.security.web.authentication.AnonymousAuthenticationFilter] для зависимости: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат для автоматической передачи для этой зависимости. Аннотации зависимостей: {}

После создания другого компонента:

    @SuppressWarnings("deprecation") // Oh, there be dragons
    @Bean
    public AnonymousAuthenticationFilter anonymousAuthenticationFilter() {
        return new AnonymousAuthenticationFilter();
    }

На меня напали

Вызвано: java.lang.IllegalArgumentException: [утверждение не выполнено] - этот аргумент String должен иметь длину; он не должен быть нулевым или пустым

Который полностью нестабилен;AssertвafterPropertiesSet() методhttps://github.com/spring-projects/spring-security/blob/master/web/src/main/java/org/springframework/security/web/authentication/AnonymousAuthenticationFilter.java мешают мне использовать конструктор по умолчанию. Используя другой подход:

    @Bean
    public AnonymousAuthenticationFilter anonymousAuthenticationFilter() {
        // it will be disabled anyway so...
        return new AnonymousAuthenticationFilter("_", new Object(), new ArrayList<GrantedAuthority>());
    }

Все намного лучше

ИНФОРМАЦИЯ 4916 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean: Фильтр anonymousAuthenticationFilter не зарегистрирован (отключен)

DEBUG 4916 --- [ost-startStop-1] o.s.security.web.FilterChainProxy: Инициализирующий фильтр 'springSecurityFilterChain'

DEBUG 4916 --- [ost-startStop-1] o.s.security.web.FilterChainProxy: Фильтр 'springSecurityFilterChain' успешно настроен

Но после доступа к некоторому ресурсу я получил:

DEBUG 4916 --- [nio-8080-exec-3] o.s.security.web.FilterChainProxy: / пользователь в позиции 10 из 13 в цепочке дополнительных фильтров; фильтр срабатывания: 'AnonymousAuthenticationFilter'

DEBUG 4916 --- [nio-8080-exec-3] o.s.s.w.a.AnonymousAuthenticationFilter: заполнен SecurityContextHolder анонимным токеном: 'org.springframework.security.authentication.AnonymousAuthenticationToken@90572420: руководитель: anonymousUser; Полномочия: [ЗАЩИЩЕНО]; Аутентифицировано: правда; Подробности: org.springframework.security.web.authentication.WebAuthenticationDetails@255f8: RemoteIpAddress: 127.0.0.1; SessionId: 6B9D974A4634548750FE78C18F62A6B0; Предоставленные полномочия: ROLE_ANONYMOUS '

По какой-то причине AnonymousAuthenticationFilter все еще работает. Вопрос: есть ли способ отключить такие фильтры в приложении Spring Boot?

Ответы на вопрос(1)

Ваш ответ на вопрос