[INFO] Scanning for projects... [INFO] [INFO] ---------------< com.aikitguides:boot4-verification-lab >--------------- [INFO] Building boot4-verification-lab 1.0.0 [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- resources:3.3.1:resources (default-resources) @ boot4-verification-lab --- [INFO] Copying 2 resources from src/main/resources to target/classes [INFO] [INFO] --- compiler:3.14.0:compile (default-compile) @ boot4-verification-lab --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- resources:3.3.1:testResources (default-testResources) @ boot4-verification-lab --- [INFO] skip non existing resourceDirectory /src/test/resources [INFO] [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ boot4-verification-lab --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- surefire:3.5.4:test (default-test) @ boot4-verification-lab --- [INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running guides.bootlab.NetworkContractTest 11:49:02.138 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [guides.bootlab.NetworkContractTest]: NetworkContractTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 11:49:02.172 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration guides.bootlab.LabApplication for test class guides.bootlab.NetworkContractTest 2026-10-23T11:49:02.291+08:00 INFO 39653 --- [ main] guides.bootlab.NetworkContractTest : Starting NetworkContractTest using Java 17.0.19 with PID 39653 (started by in ) 2026-10-23T11:49:02.292+08:00 INFO 39653 --- [ main] guides.bootlab.NetworkContractTest : No active profile set, falling back to 1 default profile: "default" 2026-10-23T11:49:02.629+08:00 INFO 39653 --- [ main] o.s.boot.tomcat.TomcatWebServer : Tomcat initialized with port 0 (http) 2026-10-23T11:49:02.634+08:00 INFO 39653 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2026-10-23T11:49:02.634+08:00 INFO 39653 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/11.0.14] 2026-10-23T11:49:02.649+08:00 INFO 39653 --- [ main] b.w.c.s.WebApplicationContextInitializer : Root WebApplicationContext: initialization completed in 349 ms 2026-10-23T11:49:02.735+08:00 TRACE 39653 --- [ main] eGlobalAuthenticationAutowiredConfigurer : Eagerly initializing {org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration=org.springframework.boot.security.autoconfigure.web.servlet.ServletWebSecurityAutoConfiguration$EnableWebSecurityConfiguration@6b063470} 2026-10-23T11:49:02.740+08:00 INFO 39653 --- [ main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with UserDetailsService bean with name inMemoryUserDetailsManager 2026-10-23T11:49:02.784+08:00 DEBUG 39653 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CsrfFilter, LogoutFilter, BasicAuthenticationFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, ExceptionTranslationFilter, AuthorizationFilter 2026-10-23T11:49:02.949+08:00 INFO 39653 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2026-10-23T11:49:03.008+08:00 INFO 39653 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:bootlab user=SA 2026-10-23T11:49:03.009+08:00 INFO 39653 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2026-10-23T11:49:03.025+08:00 INFO 39653 --- [ main] org.flywaydb.core.FlywayExecutor : Database: jdbc:h2:mem:bootlab (H2 2.4) 2026-10-23T11:49:03.028+08:00 WARN 39653 --- [ main] o.f.c.internal.database.base.Database : Using H2 2.4.240 which is newer than the version Flyway has been verified with. The latest verified version of H2 is 2.3.232. 2026-10-23T11:49:03.035+08:00 INFO 39653 --- [ main] o.f.c.i.s.JdbcTableSchemaHistory : Schema history table "PUBLIC"."flyway_schema_history" does not exist yet 2026-10-23T11:49:03.036+08:00 INFO 39653 --- [ main] o.f.core.internal.command.DbValidate : Successfully validated 1 migration (execution time 00:00.003s) 2026-10-23T11:49:03.038+08:00 INFO 39653 --- [ main] o.f.c.i.s.JdbcTableSchemaHistory : Creating Schema History table "PUBLIC"."flyway_schema_history" ... 2026-10-23T11:49:03.052+08:00 INFO 39653 --- [ main] o.f.core.internal.command.DbMigrate : Current version of schema "PUBLIC": << Empty Schema >> 2026-10-23T11:49:03.056+08:00 INFO 39653 --- [ main] o.f.core.internal.command.DbMigrate : Migrating schema "PUBLIC" to version "1 - create lab marker" 2026-10-23T11:49:03.062+08:00 INFO 39653 --- [ main] o.f.core.internal.command.DbMigrate : Successfully applied 1 migration to schema "PUBLIC", now at version v1 (execution time 00:00.001s) 2026-10-23T11:49:03.100+08:00 INFO 39653 --- [ main] o.s.boot.tomcat.TomcatWebServer : Tomcat started on port 53654 (http) with context path '/' 2026-10-23T11:49:03.102+08:00 INFO 39653 --- [ main] guides.bootlab.NetworkContractTest : Started NetworkContractTest in 0.89 seconds (process running for 1.211) OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2026-10-23T11:49:03.466+08:00 INFO 39653 --- [1-auto-1-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2026-10-23T11:49:03.467+08:00 INFO 39653 --- [1-auto-1-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2026-10-23T11:49:03.467+08:00 INFO 39653 --- [1-auto-1-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms 2026-10-23T11:49:03.470+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.471+08:00 DEBUG 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Securing GET /notes 2026-10-23T11:49:03.471+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.471+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.472+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.472+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.473+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.473+08:00 TRACE 39653 --- [1-auto-1-exec-1] s.s.w.c.CsrfTokenRequestAttributeHandler : Wrote a CSRF token to the following request attributes: [_csrf, org.springframework.security.web.csrf.CsrfToken] 2026-10-23T11:49:03.473+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.csrf.CsrfFilter : Did not protect against CSRF since request did not match IsNotHttpMethod [TRACE, HEAD, GET, OPTIONS] 2026-10-23T11:49:03.473+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (6/12) 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.logout.LogoutFilter : Did not match request to PathPattern [POST /logout] 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking BasicAuthenticationFilter (7/12) 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Did not process authentication request since failed to find username and password in Basic Authorization header 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (8/12) 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.s.HttpSessionRequestCache : matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (9/12) 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (10/12) 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12) 2026-10-23T11:49:03.474+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12) 2026-10-23T11:49:03.475+08:00 TRACE 39653 --- [1-auto-1-exec-1] estMatcherDelegatingAuthorizationManager : Authorizing GET /notes 2026-10-23T11:49:03.475+08:00 TRACE 39653 --- [1-auto-1-exec-1] estMatcherDelegatingAuthorizationManager : Checking authorization on GET /notes using org.springframework.security.authorization.AuthenticatedAuthorizationManager@5eb67fcd 2026-10-23T11:49:03.475+08:00 TRACE 39653 --- [1-auto-1-exec-1] w.c.HttpSessionSecurityContextRepository : No HttpSession currently exists 2026-10-23T11:49:03.475+08:00 TRACE 39653 --- [1-auto-1-exec-1] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.475+08:00 TRACE 39653 --- [1-auto-1-exec-1] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.475+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]] 2026-10-23T11:49:03.476+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.ExceptionTranslationFilter : Sending AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]] to authentication entry point since access is denied org.springframework.security.authorization.AuthorizationDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:99) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:181) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:198) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:96) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:118) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:237) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:195) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:317) ~[spring-security-config-7.0.0.jar:7.0.0] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:355) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:272) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:199) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] 2026-10-23T11:49:03.488+08:00 DEBUG 39653 --- [1-auto-1-exec-1] o.s.s.w.s.HttpSessionRequestCache : Saved request http://127.0.0.1:53654/notes?continue to session 2026-10-23T11:49:03.489+08:00 DEBUG 39653 --- [1-auto-1-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 2026-10-23T11:49:03.489+08:00 DEBUG 39653 --- [1-auto-1-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@601a73c3 2026-10-23T11:49:03.489+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure] 2026-10-23T11:49:03.490+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.490+08:00 DEBUG 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Securing GET /error 2026-10-23T11:49:03.490+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.490+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (6/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.logout.LogoutFilter : Did not match request to PathPattern [POST /logout] 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking BasicAuthenticationFilter (7/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (8/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.s.HttpSessionRequestCache : matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (9/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (10/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12) 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] estMatcherDelegatingAuthorizationManager : Authorizing GET /error 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] estMatcherDelegatingAuthorizationManager : Checking authorization on GET /error using org.springframework.security.authorization.AuthenticatedAuthorizationManager@5eb67fcd 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] w.c.HttpSessionSecurityContextRepository : Did not find SecurityContext in HttpSession BAA7453B94D157EC3326878317071F50 using the SPRING_SECURITY_CONTEXT session attribute 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=BAA7453B94D157EC3326878317071F50], Granted Authorities=[ROLE_ANONYMOUS]] 2026-10-23T11:49:03.491+08:00 TRACE 39653 --- [1-auto-1-exec-1] o.s.s.w.a.ExceptionTranslationFilter : Sending AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=BAA7453B94D157EC3326878317071F50], Granted Authorities=[ROLE_ANONYMOUS]] to authentication entry point since access is denied org.springframework.security.authorization.AuthorizationDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:99) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:181) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:96) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:237) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:195) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:317) ~[spring-security-config-7.0.0.jar:7.0.0] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:355) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:272) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:513) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:335) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:262) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:375) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:206) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:149) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] 2026-10-23T11:49:03.492+08:00 DEBUG 39653 --- [1-auto-1-exec-1] o.s.s.w.s.HttpSessionRequestCache : Saved request http://127.0.0.1:53654/error?continue to session 2026-10-23T11:49:03.492+08:00 DEBUG 39653 --- [1-auto-1-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 2026-10-23T11:49:03.492+08:00 DEBUG 39653 --- [1-auto-1-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@601a73c3 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.498+08:00 DEBUG 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Securing GET /notes 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] s.s.w.c.CsrfTokenRequestAttributeHandler : Wrote a CSRF token to the following request attributes: [_csrf, org.springframework.security.web.csrf.CsrfToken] 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.csrf.CsrfFilter : Did not protect against CSRF since request did not match IsNotHttpMethod [TRACE, HEAD, GET, OPTIONS] 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (6/12) 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.s.w.a.logout.LogoutFilter : Did not match request to PathPattern [POST /logout] 2026-10-23T11:49:03.498+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking BasicAuthenticationFilter (7/12) 2026-10-23T11:49:03.499+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.s.w.a.www.BasicAuthenticationFilter : Found username 'lab-user' in Basic Authorization header 2026-10-23T11:49:03.499+08:00 TRACE 39653 --- [1-auto-1-exec-2] w.c.HttpSessionSecurityContextRepository : No HttpSession currently exists 2026-10-23T11:49:03.499+08:00 TRACE 39653 --- [1-auto-1-exec-2] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.499+08:00 TRACE 39653 --- [1-auto-1-exec-2] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.499+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.s.authentication.ProviderManager : Authenticating request with DaoAuthenticationProvider (1/1) 2026-10-23T11:49:03.628+08:00 DEBUG 39653 --- [1-auto-1-exec-2] o.s.s.a.dao.DaoAuthenticationProvider : Authenticated user 2026-10-23T11:49:03.629+08:00 DEBUG 39653 --- [1-auto-1-exec-2] o.s.s.w.a.www.BasicAuthenticationFilter : Set SecurityContextHolder to UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=lab-user, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[FactorGrantedAuthority [authority=FACTOR_PASSWORD, issuedAt=2026-10-23T03:49:03.628767Z]]] 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (8/12) 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.s.w.s.HttpSessionRequestCache : matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (9/12) 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (10/12) 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12) 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12) 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] estMatcherDelegatingAuthorizationManager : Authorizing GET /notes 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] estMatcherDelegatingAuthorizationManager : Checking authorization on GET /notes using org.springframework.security.authorization.AuthenticatedAuthorizationManager@5eb67fcd 2026-10-23T11:49:03.629+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.s.w.a.AnonymousAuthenticationFilter : Did not set SecurityContextHolder since already authenticated UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=lab-user, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[FactorGrantedAuthority [authority=FACTOR_PASSWORD, issuedAt=2026-10-23T03:49:03.628767Z]]] 2026-10-23T11:49:03.629+08:00 DEBUG 39653 --- [1-auto-1-exec-2] o.s.security.web.FilterChainProxy : Secured GET /notes 2026-10-23T11:49:03.649+08:00 TRACE 39653 --- [1-auto-1-exec-2] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure] 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.652+08:00 DEBUG 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Securing POST /notes 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] s.s.w.c.CsrfTokenRequestAttributeHandler : Wrote a CSRF token to the following request attributes: [_csrf, org.springframework.security.web.csrf.CsrfToken] 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.web.csrf.CsrfTokenRequestHandler : Did not find a CSRF token in the [X-CSRF-TOKEN] request header 2026-10-23T11:49:03.652+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.web.csrf.CsrfTokenRequestHandler : Did not find a CSRF token in the [_csrf] request parameter 2026-10-23T11:49:03.652+08:00 DEBUG 39653 --- [1-auto-1-exec-3] o.s.security.web.csrf.CsrfFilter : Invalid CSRF token found for http://127.0.0.1:53654/notes 2026-10-23T11:49:03.653+08:00 DEBUG 39653 --- [1-auto-1-exec-3] o.s.s.w.access.AccessDeniedHandlerImpl : Responding with 403 status code 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure] 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.653+08:00 DEBUG 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Securing GET /error 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (6/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.w.a.logout.LogoutFilter : Did not match request to PathPattern [POST /logout] 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking BasicAuthenticationFilter (7/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (8/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.w.s.HttpSessionRequestCache : matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (9/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (10/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12) 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] estMatcherDelegatingAuthorizationManager : Authorizing GET /error 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] estMatcherDelegatingAuthorizationManager : Checking authorization on GET /error using org.springframework.security.authorization.AuthenticatedAuthorizationManager@5eb67fcd 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] w.c.HttpSessionSecurityContextRepository : Did not find SecurityContext in HttpSession 71BD256EE8C5884019288A2A920B8F63 using the SPRING_SECURITY_CONTEXT session attribute 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.653+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=71BD256EE8C5884019288A2A920B8F63], Granted Authorities=[ROLE_ANONYMOUS]] 2026-10-23T11:49:03.654+08:00 TRACE 39653 --- [1-auto-1-exec-3] o.s.s.w.a.ExceptionTranslationFilter : Sending AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=71BD256EE8C5884019288A2A920B8F63], Granted Authorities=[ROLE_ANONYMOUS]] to authentication entry point since access is denied org.springframework.security.authorization.AuthorizationDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:99) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:181) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:96) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:237) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:195) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:317) ~[spring-security-config-7.0.0.jar:7.0.0] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:355) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:272) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:513) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:335) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:262) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:375) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:206) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:149) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] 2026-10-23T11:49:03.654+08:00 DEBUG 39653 --- [1-auto-1-exec-3] o.s.s.w.s.HttpSessionRequestCache : Saved request http://127.0.0.1:53654/error?continue to session 2026-10-23T11:49:03.654+08:00 DEBUG 39653 --- [1-auto-1-exec-3] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 2026-10-23T11:49:03.654+08:00 DEBUG 39653 --- [1-auto-1-exec-3] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@601a73c3 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.655+08:00 DEBUG 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Securing GET /error 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] s.s.w.c.CsrfTokenRequestAttributeHandler : Wrote a CSRF token to the following request attributes: [_csrf, org.springframework.security.web.csrf.CsrfToken] 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.csrf.CsrfFilter : Did not protect against CSRF since request did not match IsNotHttpMethod [TRACE, HEAD, GET, OPTIONS] 2026-10-23T11:49:03.655+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (6/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.logout.LogoutFilter : Did not match request to PathPattern [POST /logout] 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking BasicAuthenticationFilter (7/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.www.BasicAuthenticationFilter : Did not process authentication request since failed to find username and password in Basic Authorization header 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (8/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.s.HttpSessionRequestCache : matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (9/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (10/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12) 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] estMatcherDelegatingAuthorizationManager : Authorizing GET /error 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] estMatcherDelegatingAuthorizationManager : Checking authorization on GET /error using org.springframework.security.authorization.AuthenticatedAuthorizationManager@5eb67fcd 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] w.c.HttpSessionSecurityContextRepository : No HttpSession currently exists 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]] 2026-10-23T11:49:03.656+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.ExceptionTranslationFilter : Sending AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=null], Granted Authorities=[ROLE_ANONYMOUS]] to authentication entry point since access is denied org.springframework.security.authorization.AuthorizationDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:99) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:181) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:198) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:96) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:118) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:237) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:195) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:317) ~[spring-security-config-7.0.0.jar:7.0.0] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:355) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:272) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:199) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] 2026-10-23T11:49:03.656+08:00 DEBUG 39653 --- [1-auto-1-exec-4] o.s.s.w.s.HttpSessionRequestCache : Saved request http://127.0.0.1:53654/error?continue to session 2026-10-23T11:49:03.656+08:00 DEBUG 39653 --- [1-auto-1-exec-4] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 2026-10-23T11:49:03.656+08:00 DEBUG 39653 --- [1-auto-1-exec-4] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@601a73c3 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match request to [Is Secure] 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Trying to match request against DefaultSecurityFilterChain defined as 'securityFilterChain' in [class path resource [guides/bootlab/SecurityConfiguration.class]] matching [any request] and having filters [DisableEncodeUrl, WebAsyncManagerIntegration, SecurityContextHolder, HeaderWriter, Csrf, Logout, BasicAuthentication, RequestCacheAware, SecurityContextHolderAwareRequest, AnonymousAuthentication, ExceptionTranslation, Authorization] (1/1) 2026-10-23T11:49:03.657+08:00 DEBUG 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Securing GET /error 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking DisableEncodeUrlFilter (1/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking WebAsyncManagerIntegrationFilter (2/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderFilter (3/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking HeaderWriterFilter (4/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking CsrfFilter (5/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking LogoutFilter (6/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.logout.LogoutFilter : Did not match request to PathPattern [POST /logout] 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking BasicAuthenticationFilter (7/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking RequestCacheAwareFilter (8/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.s.HttpSessionRequestCache : matchingRequestParameterName is required for getMatchingRequest to lookup a value, but not provided 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking SecurityContextHolderAwareRequestFilter (9/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking AnonymousAuthenticationFilter (10/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking ExceptionTranslationFilter (11/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.security.web.FilterChainProxy : Invoking AuthorizationFilter (12/12) 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] estMatcherDelegatingAuthorizationManager : Authorizing GET /error 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] estMatcherDelegatingAuthorizationManager : Checking authorization on GET /error using org.springframework.security.authorization.AuthenticatedAuthorizationManager@5eb67fcd 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] w.c.HttpSessionSecurityContextRepository : Did not find SecurityContext in HttpSession 0D5573C13486A3F6FFBC3E252D4C1C82 using the SPRING_SECURITY_CONTEXT session attribute 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] .s.s.w.c.SupplierDeferredSecurityContext : Created SecurityContextImpl [Null authentication] 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.AnonymousAuthenticationFilter : Set SecurityContextHolder to AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=0D5573C13486A3F6FFBC3E252D4C1C82], Granted Authorities=[ROLE_ANONYMOUS]] 2026-10-23T11:49:03.657+08:00 TRACE 39653 --- [1-auto-1-exec-4] o.s.s.w.a.ExceptionTranslationFilter : Sending AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=127.0.0.1, SessionId=0D5573C13486A3F6FFBC3E252D4C1C82], Granted Authorities=[ROLE_ANONYMOUS]] to authentication entry point since access is denied org.springframework.security.authorization.AuthorizationDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:99) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:181) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:96) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:237) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:195) ~[spring-security-web-7.0.0.jar:7.0.0] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:317) ~[spring-security-config-7.0.0.jar:7.0.0] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:355) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:272) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-7.0.1.jar:7.0.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-7.0.1.jar:7.0.1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:513) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:335) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:262) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:375) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:206) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:149) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1778) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) ~[tomcat-embed-core-11.0.14.jar:11.0.14] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] 2026-10-23T11:49:03.658+08:00 DEBUG 39653 --- [1-auto-1-exec-4] o.s.s.w.s.HttpSessionRequestCache : Saved request http://127.0.0.1:53654/error?continue to session 2026-10-23T11:49:03.658+08:00 DEBUG 39653 --- [1-auto-1-exec-4] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 2026-10-23T11:49:03.658+08:00 DEBUG 39653 --- [1-auto-1-exec-4] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint@601a73c3 OBSERVATION real_http: anonymous_get=401 basic_get=200 basic_post_without_csrf=401 [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.579 s <<< FAILURE! -- in guides.bootlab.NetworkContractTest [ERROR] guides.bootlab.NetworkContractTest.realHttpBasicRequestsPreserveTheSecurityContract -- Time elapsed: 0.559 s <<< FAILURE! org.opentest4j.AssertionFailedError: expected: <403> but was: <401> at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:158) at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:139) at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:201) at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:152) at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:147) at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:558) at guides.bootlab.NetworkContractTest.realHttpBasicRequestsPreserveTheSecurityContract(NetworkContractTest.java:41) [INFO] [INFO] Results: [INFO] [ERROR] Failures: [ERROR] NetworkContractTest.realHttpBasicRequestsPreserveTheSecurityContract:41 expected: <403> but was: <401> [INFO] [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.624 s [INFO] Finished at: 2026-10-23T11:49:04+08:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test (default-test) on project boot4-verification-lab: There are test failures. [ERROR] [ERROR] See /target/surefire-reports for the individual test results. [ERROR] See dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream. [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException