Skip to content

UnsupportedOperationException in AbstractRequestMatcherRegistry#requestMatchers using programmatically defined ContextLoaderListener #13789

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
kravpeter opened this issue Sep 10, 2023 · 10 comments
Assignees
Labels
in: config An issue in spring-security-config status: declined A suggestion or change that we don't feel we should currently apply type: bug A general bug

Comments

@kravpeter
Copy link

Description
After upgrading Spring Security from version 5.8.4 to 5.8.6, the ApplicationContext configured via AbstractAnnotationConfigDispatcherServletInitializer cannot be started, because a new implementation of "requestMatchers" calls "mappableServletRegistrations," which invokes servletContext.getServletRegistrations(), resulting in a UnsupportedOperationException:

Caused by: java.lang.UnsupportedOperationException: Section 4.4 of the Servlet 3.0 specification does not permit this method to be called from a ServletContextListener that was not defined in web.xml, a web-fragment.xml file nor annotated with @WebListener
		at org.apache.catalina.core.StandardContext$NoPluggabilityServletContext.getServletRegistrations(StandardContext.java:6306)
		at org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry.mappableServletRegistrations(AbstractRequestMatcherRegistry.java:333)
		at org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry.requestMatchers(AbstractRequestMatcherRegistry.java:317)

When using AbstractAnnotationConfigDispatcherServletInitializer to initialize the ApplicationContext, the ContextLoaderListener is not declared in web.xml, but it is registered against the given servlet context programmatically in AbstractContextLoaderInitializer.

The Servlet 3.0 specification states:
"If the ServletContext passed to the ServletContextListener’s
contextInitialized method was neither declared in web.xml or webfragment.xml nor annotated with WebListener then an
UnsupportedOperationException MUST be thrown for all the methods defined
for programmatic configuration of servlets, filters and listeners."

As a result, ContextLoaderListener#contextInitialized(ServletContextEvent event) attempts to initialize the 'securityFilterChain' defined in Spring Security configuration but fails due to the call to servletContext.getServletRegistrations() in "mappableServletRegistrations," which throws an UnsupportedOperationException, because ContextLoaderListener is not defined in web.xml but has been registered via the javax.servlet.ServletContext.addListener API.

Sample
A link to a GitHub repository with a minimal, reproducible sample.

To Reproduce
try to start the sample using:

  • Spring Security v. 5.8.6
  • Tomcat 9.0.80
  • ContextLoaderListener in the sample is registered in AbstractContextLoaderInitializer via javax.servlet.ServletContext.addListener API.

(when downgrading the Spring Security version to 5.8.4, the sample application starts correctly).

@eternachen
Copy link

Any ETA for this issue?

@helloworld65535
Copy link

See #13602

@hantsy
Copy link

hantsy commented Oct 20, 2023

Oh My God, update my example project to the Spring Security 6.2.0-RC2 still encounter this issue.

@jzheaux jzheaux added in: config An issue in spring-security-config and removed status: waiting-for-triage An issue we've not yet triaged labels Oct 30, 2023
@jzheaux jzheaux added this to the 5.8.9 milestone Oct 30, 2023
@hantsy
Copy link

hantsy commented Oct 31, 2023

In my example project, the latest Spring Security 6.2.0-RC, the following codes throw exceptions.

 SecurityFilterChain apiFilterChain(HttpSecurity http) throws Exception {
        http
                // antMatchers -> securityMatcher
                .securityMatcher("/api/**")
                .authorizeHttpRequests(authorize -> authorize  // this line caused exception.
                        .anyRequest().hasRole("ADMIN")
                )
                .httpBasic(withDefaults());

        return http.build();
    }

The exceptions in console when running mvn clean verify -Pit.

Context initialization failed
[INFO] [talledLocalContainer] org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.config
uration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'apiFilterChain' defined in com.example.
demo.SecurityConfig: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'apiFilterChain' threw exception with message: null
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBe
anPostProcessor.java:880)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.
java:833)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493
)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:1572)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.contextInitialized(ServletContextHandler.java:490)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletHandler.initialize(ServletHandler.java:665)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.startContext(ServletContextHandler.java:1306)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.startContext(WebAppContext.java:1223)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.lambda$doStart$0(ServletContextHandler.java:1041)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1206)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.doStart(ServletContextHandler.java:1038)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.doStart(WebAppContext.java:496)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:522)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:162)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.pathAdded(ScanningAppProvider.java:293)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ContextProvider.pathAdded(ContextProvider.java:520)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.pathAdded(ScanningAppProvider.java:69)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:902)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:868)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.scan(Scanner.java:775)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.startScanning(Scanner.java:664)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:636)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:264)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:592)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:263)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.start(Server.java:622)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:472)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.doStart(Server.java:563)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:2030)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.invokeMain(Main.java:221)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.start(Main.java:519)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.main(Main.java:76)
[INFO] [talledLocalContainer] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiFilterChain' defined in com.example.demo.SecurityCon
fig: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'apiFilterChain' threw exception with message: null
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:643)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:13
36)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1166)        
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1687)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1651)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1541)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1509)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1390)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBe
anPostProcessor.java:872)
[INFO] [talledLocalContainer]   ... 58 common frames omitted
[INFO] [talledLocalContainer] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory met
hod 'apiFilterChain' threw exception with message: null
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:178)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
[INFO] [talledLocalContainer]   ... 75 common frames omitted
[INFO] [talledLocalContainer] Caused by: java.lang.UnsupportedOperationException: null
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler$ServletContextApi.getServletRegistrations(ServletContextHandler.java:2429)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.ServletRegistrationCollection.registrations(ServletRegistrationCollection.java:54)    
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.RequestMatcherBuilders.createDefault(RequestMatcherBuilders.java:89)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.AbstractRequestMatcherBuilderRegistry.<init>(AbstractRequestMatcherBuilderRegistry.jav
a:29)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer$AuthorizationManagerRequestMatcherRegistry.<init>(Auth
orizeHttpRequestsConfigurer.java:163)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer.<init>(AuthorizeHttpRequestsConfigurer.java:82)       
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.builders.HttpSecurity.authorizeHttpRequests(HttpSecurity.java:1466)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig.apiFilterChain(SecurityConfig.java:48)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig$$SpringCGLIB$$0.CGLIB$apiFilterChain$4(<generated>)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>)
[INFO] [talledLocalContainer]   at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258)
[INFO] [talledLocalContainer]   at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig$$SpringCGLIB$$0.apiFilterChain(<generated>)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
[INFO] [talledLocalContainer]   ... 76 common frames omitted
[INFO] [talledLocalContainer] 2023-10-31 23:49:15.637:WARN :oejew.WebAppContext:main: Failed startup of context oeje10w.WebAppContext@2d778add{demo,/demo,b=file:///D:/hantsylabs/spring
6-sandbox/mvc-freemarker/target/demo/,a=AVAILABLE,h=oeje10s.SessionHandler@a23a01d{STARTED}}{D:\hantsylabs\spring6-sandbox\mvc-freemarker\target\demo.war}
[INFO] [talledLocalContainer] org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.config
uration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'apiFilterChain' defined in com.example.
demo.SecurityConfig: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'apiFilterChain' threw exception with message: null
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBe
anPostProcessor.java:880)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.
java:833)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493
)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:1572)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.contextInitialized(ServletContextHandler.java:490)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletHandler.initialize(ServletHandler.java:665)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.startContext(ServletContextHandler.java:1306)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.startContext(WebAppContext.java:1223)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.lambda$doStart$0(ServletContextHandler.java:1041)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1206)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.doStart(ServletContextHandler.java:1038)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.doStart(WebAppContext.java:496)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:522)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:162)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.pathAdded(ScanningAppProvider.java:293)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ContextProvider.pathAdded(ContextProvider.java:520)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.pathAdded(ScanningAppProvider.java:69)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:902)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:868)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.scan(Scanner.java:775)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.startScanning(Scanner.java:664)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:636)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:264)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:592)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:263)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.start(Server.java:622)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:472)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.doStart(Server.java:563)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:2030)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.invokeMain(Main.java:221)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.start(Main.java:519)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.main(Main.java:76)
[INFO] [talledLocalContainer] Caused by:
[INFO] [talledLocalContainer] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiFilterChain' defined in com.example.demo.SecurityConfig: Failed
 to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'apiFilterChain' threw exception with message: null
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:643)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:13
36)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1166)        
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1687)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1651)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1541)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1509)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1390)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBe
anPostProcessor.java:872)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.
java:833)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493
)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:1572)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.contextInitialized(ServletContextHandler.java:490)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletHandler.initialize(ServletHandler.java:665)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.startContext(ServletContextHandler.java:1306)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.startContext(WebAppContext.java:1223)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.lambda$doStart$0(ServletContextHandler.java:1041)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1206)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.doStart(ServletContextHandler.java:1038)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.doStart(WebAppContext.java:496)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:522)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:162)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.pathAdded(ScanningAppProvider.java:293)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ContextProvider.pathAdded(ContextProvider.java:520)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.pathAdded(ScanningAppProvider.java:69)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:902)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:868)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.scan(Scanner.java:775)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.startScanning(Scanner.java:664)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:636)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:264)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:592)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:263)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.start(Server.java:622)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:472)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.doStart(Server.java:563)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:2030)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.invokeMain(Main.java:221)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.start(Main.java:519)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.main(Main.java:76)
[INFO] [talledLocalContainer] Caused by:
[INFO] [talledLocalContainer] org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'apiFil
terChain' threw exception with message: null
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:178)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:643)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:13
36)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1166)        
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1687)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1651)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1541)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1509)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1390)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBe
anPostProcessor.java:872)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.
java:833)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493
)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:1572)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.contextInitialized(ServletContextHandler.java:490)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletHandler.initialize(ServletHandler.java:665)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.startContext(ServletContextHandler.java:1306)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.startContext(WebAppContext.java:1223)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.lambda$doStart$0(ServletContextHandler.java:1041)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1206)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.doStart(ServletContextHandler.java:1038)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.doStart(WebAppContext.java:496)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:522)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:162)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.pathAdded(ScanningAppProvider.java:293)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ContextProvider.pathAdded(ContextProvider.java:520)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.pathAdded(ScanningAppProvider.java:69)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:902)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:868)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.scan(Scanner.java:775)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.startScanning(Scanner.java:664)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:636)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:264)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:592)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:263)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.start(Server.java:622)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:472)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.doStart(Server.java:563)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:2030)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.invokeMain(Main.java:221)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.start(Main.java:519)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.main(Main.java:76)
[INFO] [talledLocalContainer] Caused by:
[INFO] [talledLocalContainer] java.lang.UnsupportedOperationException
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler$ServletContextApi.getServletRegistrations(ServletContextHandler.java:2429)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.ServletRegistrationCollection.registrations(ServletRegistrationCollection.java:54)    
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.RequestMatcherBuilders.createDefault(RequestMatcherBuilders.java:89)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.AbstractRequestMatcherBuilderRegistry.<init>(AbstractRequestMatcherBuilderRegistry.jav
a:29)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer$AuthorizationManagerRequestMatcherRegistry.<init>(Auth
orizeHttpRequestsConfigurer.java:163)
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer.<init>(AuthorizeHttpRequestsConfigurer.java:82)       
[INFO] [talledLocalContainer]   at org.springframework.security.config.annotation.web.builders.HttpSecurity.authorizeHttpRequests(HttpSecurity.java:1466)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig.apiFilterChain(SecurityConfig.java:48)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig$$SpringCGLIB$$0.CGLIB$apiFilterChain$4(<generated>)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>)
[INFO] [talledLocalContainer]   at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258)
[INFO] [talledLocalContainer]   at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
[INFO] [talledLocalContainer]   at com.example.demo.SecurityConfig$$SpringCGLIB$$0.apiFilterChain(<generated>)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:643)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:13
36)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1166)        
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1687)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1651)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeanCollection(DefaultListableBeanFactory.java:1541)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1509)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1390)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.resolveMethodArguments(AutowiredAnnotationBe
anPostProcessor.java:872)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.
java:833)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493
)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274)
[INFO] [talledLocalContainer]   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:1572)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.contextInitialized(ServletContextHandler.java:490)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletHandler.initialize(ServletHandler.java:665)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.startContext(ServletContextHandler.java:1306)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.startContext(WebAppContext.java:1223)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.lambda$doStart$0(ServletContextHandler.java:1041)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.call(ContextHandler.java:1206)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.servlet.ServletContextHandler.doStart(ServletContextHandler.java:1038)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.ee10.webapp.WebAppContext.doStart(WebAppContext.java:496)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:522)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:162)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.pathAdded(ScanningAppProvider.java:293)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ContextProvider.pathAdded(ContextProvider.java:520)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.pathAdded(ScanningAppProvider.java:69)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:902)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:868)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.scan(Scanner.java:775)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.startScanning(Scanner.java:664)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:636)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:264)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:592)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:263)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.start(Server.java:622)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Handler$Abstract.doStart(Handler.java:472)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.server.Server.doStart(Server.java:563)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:2030)
[INFO] [talledLocalContainer]   at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[INFO] [talledLocalContainer]   at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.invokeMain(Main.java:221)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.start(Main.java:519)
[INFO] [talledLocalContainer]   at org.eclipse.jetty.start.Main.main(Main.java:76)
[INFO] [talledLocalContainer] 2023-10-31 23:49:15.966:INFO :oejd.DeploymentManager:main: addApp: App@70d5d96b[ee10,null,D:\hantsylabs\spring6-sandbox\mvc-freemarker\target\cargo\config
urations\jetty12x\webapps\cargocpc.war]
[INFO] [talledLocalContainer] 2023-10-31 23:49:16.091:INFO :oejsh.ContextHandler:main: Started oeje10w.WebAppContext@6463da36{cargocpc,/cargocpc,b=file:///C:/Users/hantsy/AppData/Local
/Temp/jetty-0_0_0_0-8080-cargocpc_war-_cargocpc-any-12220742244791597740/webapp/,a=AVAILABLE,h=oeje10s.SessionHandler@1a7e799e{STARTED}}{D:\hantsylabs\spring6-sandbox\mvc-freemarker\ta
rget\cargo\configurations\jetty12x\webapps\cargocpc.war}
[INFO] [talledLocalContainer] 2023-10-31 23:49:16.183:INFO :oejes.ServletContextHandler:main: Started oeje10w.WebAppContext@6463da36{cargocpc,/cargocpc,b=file:///C:/Users/hantsy/AppDat
a/Local/Temp/jetty-0_0_0_0-8080-cargocpc_war-_cargocpc-any-12220742244791597740/webapp/,a=AVAILABLE,h=oeje10s.SessionHandler@1a7e799e{STARTED}}{D:\hantsylabs\spring6-sandbox\mvc-freema
rker\target\cargo\configurations\jetty12x\webapps\cargocpc.war}
[INFO] [talledLocalContainer] 2023-10-31 23:49:16.185:INFO :oejs.DefaultSessionIdManager:main: Session workerName=node0
[INFO] [talledLocalContainer] 2023-10-31 23:49:16.271:INFO :oejs.AbstractConnector:main: Started ServerConnector@2a38cdeb{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
[INFO] [talledLocalContainer] 2023-10-31 23:49:16.293:INFO :oejs.Server:main: Started oejs.Server@156b88f5{STARTING}[12.0.3,sto=5000] @17271ms
[INFO] [talledLocalContainer] Jetty 12.0.3 started on port [8080]
[INFO] Press Ctrl-C to stop the container...

@jzheaux
Copy link
Contributor

jzheaux commented Oct 31, 2023

Hi, @kravpeter, thanks for reaching out.

The minimum supported version for Spring Security 5.8.x is Servlet 4.0. Please consider upgrading your servlet dependency.

You can read about minimum versions here: https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions#javajakarta-ee-versions

@jzheaux
Copy link
Contributor

jzheaux commented Oct 31, 2023

@hantsy, thanks for the code snippet. Does the problem persist if you update to a later Servlet implementation?

If you must stay on Servlet 3.0, then you can bypass the validation check by using a RequestMatcher instance instead like so:

 SecurityFilterChain apiFilterChain(HttpSecurity http) throws Exception {
     http
           .securityMatcher(new AntPathRequestMatcher("/api/**"))
           .authorizeHttpRequests(authorize -> authorize
                .anyRequest().hasRole("ADMIN")
           )
           .httpBasic(withDefaults());
    return http.build();
}

Or, if /api/* are Spring MVC endpoints, then do:

 SecurityFilterChain apiFilterChain(HttpSecurity http, HandlerMappingIntrospector introspector) throws Exception {
     http
           .securityMatcher(new MvcRequestMatcher(introspector, "/api/**"))
           .authorizeHttpRequests(authorize -> authorize
                .anyRequest().hasRole("ADMIN")
           )
           .httpBasic(withDefaults());
    return http.build();
}

@jzheaux jzheaux added the status: declined A suggestion or change that we don't feel we should currently apply label Oct 31, 2023
@jzheaux jzheaux removed this from the 5.8.9 milestone Oct 31, 2023
@jzheaux jzheaux closed this as completed Nov 7, 2023
@hantsy
Copy link

hantsy commented Nov 8, 2023

@jzheaux I have updated to Tomcat 10.1/Jetty 12 in my sample project, it aligns to Jakarta EE 10/Servlet 6.0.

But the sample codes was working well with Spring 6/Spring Boot 3.1.

https://github.com/hantsy/spring6-sandbox/blob/master/mvc-freemarker/pom.xml#L45

It also failed on Tomcat 10.1 when running mvn clean package cargo:run -Ptomcat.

@hantsy
Copy link

hantsy commented Nov 8, 2023

My original post #13794 is based on Tomcat 10 and Jetty 11, and marked as duplicated with this issue.

@hantsy
Copy link

hantsy commented Nov 8, 2023

Add Wildfly 30.0.0.Final for test purpose, got failure.

@hantsy
Copy link

hantsy commented Nov 8, 2023

It seems my issue is different from this, I am always using a newest Servlet container in my example projects.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: config An issue in spring-security-config status: declined A suggestion or change that we don't feel we should currently apply type: bug A general bug
Projects
None yet
Development

No branches or pull requests

5 participants