Spring Security Filter

Spring Security is a framework that provides key security mechanism authentication, authorization and and protect application against attack. Spring security 5.3.2 requires a Java 8 or higher Run-time Environment. There is not any need to configure a special Java Authentication and Authorization Service (JAAS) policy file or place Spring Security into common classpath locations. All required files are contained within your application.

Filter in Spring Security

Spring Security Servlet support is based on Servlet Filters. The behavior of Filter is like, Client sends a request to the application and the container creates a FilterChain. FilterChain contains the Filter and Servlet that should processes the HttpServletReques based on path of RequestURI.

One Servlet can handle a single HttpServletRequest and HttpServletResponse. More than one filter can prevent downstream Filter or the Servlet from being invoked. Filter can also modify the HttpServletRequest or HttpServletResponse used by the downstream Filter and Servlet.

DelegatingFilterProxy 

Spring provides a Filter implementation named DelegatingFilterProxy that allows bridging between the servlet container's lifecycle and Spring's ApplicationContext. The DelegatingFilterProxy is a servlet filter that allows passing control to Filter classes that have access to the Spring application context.

Java Doc Says: "Proxy for a Standard Servlet Filter, delegating to a Spring-managed bean that implements the Filter interface". When using servlet filter, we obviously need to declare them as a filter class in Java-Config. Spring's DelegatingFilterProxy provides the link between java-config and application context.

DelegatingFilterProxy is a class in Spring Web Module. It provides feature for making HTTP calls pass through filters before reaching to the actual destination. With the help of DelegatingFilterProxy, a class implementing the javax.Servlet.Filter interface can be wired into the filter chain.

Spring Security make extensive use of DelegatingFilterProxy for securing web  API calls and resources from unauthorized access.

FilterChainProxy

Spring Security Servlet support is contained within FilterChainProxy. FilterChainProxy is a special Filter provided by Spring Security that allows delegating to many Filter instance through SecurityFilterChain. FilterChainProxy is a Bean, it is typically wrapped in a DelegatingFilterProxy.

SecurityFilterChain

SecurityFilterChain is used by FilterChainProxy to determine which Spring Security Filter should be invoked for this request. The Security Filters in SecurityFilterChain are typically Beans, but they are registered with the FilterChainProxy instead of DelegatingFilterProxy.

Security Filter

Security Filter are inserted into the FilterChainProxy with the SecurityFilterChain API.  Below are comprehensive list of Spring Security Filter ordering. (Spring-Security 5.3.2)


  • ChannelProcessingFilter
  • ConcurrentSessionFilter
  • WebAsyncManagerIntegrationFilter
  • SecurityContextPersistenceFilter
  • HeaderWriterFilter
  • CorsFilter
  • CsrfFilter
  • LogoutFilter
  • OAuth2AuthorizationRequestRedirectFilter
  • Saml2WebSsoAuthenticationRequestFilter
  • X509AuthenticationFilter
  • AbstractPreAuthenticatedProcessingFilter
  • CasAuthenticationFilter
  • OAuth2LoginAuthenticationFilter
  • Saml2WebSsoAuthenticationFilter
  • UsernamePasswordAuthenticationFilter
  • ConcurrentSessionFilter
  • OpenIDAuthenticationFilter
  • DefaultLoginPageGeneratingFilter
  • DefaultLogoutPageGeneratingFilter
  • DigestAuthenticationFilter
  • BearerTokenAuthenticationFilter
  • BasicAuthenticationFilter
  • RequestCacheAwareFilter
  • SecurityContextHolderAwareRequestFilter
  • JaasApiIntegrationFilter
  • RememberMeAuthenticationFilter
  • AnonymousAuthenticationFilter
  • OAuth2AuthorizationCodeGrantFilter
  • SessionManagementFilter
  • ExceptionTranslationFilter
  • FilterSecurityInterceptor
  • SwitchUserFilter



Comments

Popular posts from this blog

Maven Setting Mirror

Spring Session

Hibernate Version 5.0