Java – how to add a filter before another filter in spring security?
•
Java
My application has two different security configurations One is oauth2securityconfiguration and the other is ldapsecurityconfiguration In oauth2securityconfiguration, I have the following security configurations and two filters:
@Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .exceptionHandling() .authenticationEntryPoint(authenticationEntryPoint) .and() .authorizeRequests() .antMatchers(OAUTH_ENDPOINT).permitAll() .anyRequest().authenticated() .and() .logout() .logoutUrl(logoUT_ENDPOINT) .logoutSuccessUrl("/") .addlogoutHandler(oAuthlogoutHandler) .and() .addFilterAfter(oAuth2ClientContextFilter,ExceptionTranslationFilter.class) .addFilterBefore(oAuth2AuthenticationProcessingFilter,FilterSecurityInterceptor.class) // anonymous login must be disabled,// otherwise an anonymous authentication will be created,// and the UserRedirectrequiredException will not be thrown,// and the user will not be redirected to the authorization server .anonymous().disable(); }
Ldapsecurityconfiguration security configuration:
@Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .exceptionHandling() .authenticationEntryPoint(restAuthenticationEntryPoint) .and() .authorizeRequests() .antMatchers(AUTH_ENDPOINT).permitAll() .anyRequest().authenticated() .and() .logout() .and() .addFilterBefore(authenticationFilter,OAuth2ClientContextFilter.class); }
However, when initializing the filter chain, I received this error:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IllegalArgumentException: Cannot register after unregistered Filter class org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ... 36 more Caused by: java.lang.IllegalArgumentException: Cannot register after unregistered Filter class org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter at org.springframework.security.config.annotation.web.builders.FilterComparator.registerBefore(FilterComparator.java:183) at org.springframework.security.config.annotation.web.builders.HttpSecurity.addFilterBefore(HttpSecurity.java:1039) at com.company.configuration.LdapSecurityConfiguration.configure(LdapSecurityConfiguration.java:63) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.getHttp(WebSecurityConfigurerAdapter.java:224) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.init(WebSecurityConfigurerAdapter.java:315) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.init(WebSecurityConfigurerAdapter.java:86) at com.company.configuration.LdapSecurityConfiguration$$EnhancerBySpringcglib$$b4922dd5.init(<generated>) at org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.init(AbstractConfiguredSecurityBuilder.java:371) at org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.doBuild(AbstractConfiguredSecurityBuilder.java:325) at org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:41) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain(WebSecurityConfiguration.java:104) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringcglib$$33ca6b4e.cglib$springSecurityFilterChain$3(<generated>) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringcglib$$33ca6b4e$$FastClassBySpringcglib$$b8c23686.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringcglib$$33ca6b4e.springSecurityFilterChain(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ... 37 more
Solution
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码