### Tomcat's filter chain with Spring Security 7.1.2 enabled
 1  characterEncodingFilter      [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
 2  formContentFilter            [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
 3  earlyFilter                  [/*]                 [REQUEST]
 4  requestContextFilter         [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
 5  springSecurityFilterChain    [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
 6  rawFilter                    [/*]                 [REQUEST]
 7  accessLog                    [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
 8  apiKeyFilter                 [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
 9  visibilityFilter             [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
10  bodyFilter                   [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
11  faultFilter                  [/*]                 [FORWARD, INCLUDE, REQUEST, ERROR, ASYNC]
12  twiceFilter                  [/*]                 [REQUEST]
13  Tomcat WebSocket (JSR356) Filter [/*]                 [FORWARD, REQUEST]

### Inside springSecurityFilterChain (FilterChainProxy.getFilterChains().get(0).getFilters()), in order
 1  DisableEncodeUrlFilter
 2  WebAsyncManagerIntegrationFilter
 3  SecurityContextHolderFilter
 4  HeaderWriterFilter
 5  LogoutFilter
 6  TwiceFilter
 7  BasicAuthenticationFilter
 8  RequestCacheAwareFilter
 9  SecurityContextHolderAwareRequestFilter
10  AnonymousAuthenticationFilter
11  ExceptionTranslationFilter
12  AuthorizationFilter

### GET /api/hello/ankur with no credentials
HTTP 401  (empty body)
01 REQUEST  filter:early(order -200)       before chain
02 REQUEST  filter:twice                   doFilter
03 REQUEST  filter:early(order -200)       after chain
04 ERROR    filter:twice                   doFilter

### GET /api/hello/ankur as demo:demo
HTTP 200  body=Hello, ankur
01 REQUEST  filter:early(order -200)       before chain
02 REQUEST  filter:twice                   doFilter
03 REQUEST  filter:raw(order 5)            before chain
04 REQUEST  filter:accessLog(order 10)     before chain GET /api/hello/ankur
05 REQUEST  filter:twice                   doFilter
06 REQUEST  servlet:DispatcherServlet      doDispatch start
07 REQUEST  interceptor:A                  preHandle  handler=HandlerMethod HelloController#hello
08 REQUEST  interceptor:B                  preHandle  handler=HandlerMethod HelloController#hello
09 REQUEST  aspect:controller              before HelloController#hello args=[ankur]
10 REQUEST  controller                     hello(ankur)
11 REQUEST  aspect:service                 before GreetingService#greet args=[ankur]
12 REQUEST  aspect:service                 after  GreetingService#greet returned=Hello, ankur
13 REQUEST  aspect:controller              after  HelloController#hello returned=Hello, ankur (String)
14 REQUEST  interceptor:B                  postHandle status=200 modelAndView=null
15 REQUEST  interceptor:A                  postHandle status=200 modelAndView=null
16 REQUEST  interceptor:B                  afterCompletion ex=null
17 REQUEST  interceptor:A                  afterCompletion ex=null
18 REQUEST  servlet:DispatcherServlet      doDispatch end
19 REQUEST  filter:accessLog(order 10)     after chain status=200 asyncStarted=false
20 REQUEST  filter:raw(order 5)            after chain
21 REQUEST  filter:early(order -200)       after chain
