Un filtro personalizado en la cadena de filtros de seguridad de Spring

1. Información general

En este artículo rápido, nos centraremos en escribir un filtro personalizado para la cadena de filtros de Spring Security.

2. Creación del filtro

Spring Security proporciona una serie de filtros de forma predeterminada, y la mayoría de las veces, son suficientes.

Pero, por supuesto, a veces es necesario implementar una nueva funcionalidad con la creación de un nuevo filtro para usar en la cadena.

Comenzaremos implementando org.springframework.web.filter.GenericFilterBean .

El GenericFilterBean es un simple javax.servlet.Filter aplicación de implementación que es consciente de la primavera.

En cuanto a la implementación, solo necesitamos implementar un método único:

public class CustomFilter extends GenericFilterBean { @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); } }

3. Uso del filtro en la configuración de seguridad

Somos libres de elegir la configuración XML o la configuración Java para conectar el filtro a la configuración de Spring Security.

3.1. Configuración de Java

Puede registrar el filtro anulando mediante programación el método de configuración de WebSecurityConfigurerAdapter . Por ejemplo, funciona con el método addFilterAfter en una instancia de HttpSecurity :

@Configuration public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.addFilterAfter( new CustomFilter(), BasicAuthenticationFilter.class); } } 

Hay un par de métodos posibles:

  • addFilterBefore (filtro, clase): agrega un filtro antes de la posición de la clase de filtro especificada
  • addFilterAfter (filtro, clase) : agrega un filtro después de la posición de la clase de filtro especificada
  • addFilterAt (filtro, clase) : agrega un filtro en la ubicación de la clase de filtro especificada
  • addFilter (filtro) : agrega un filtro que debe ser una instancia o extender uno de los filtros proporcionados por Spring Security

3.2. Configuración XML

Puede agregar el filtro a la cadena usando la etiqueta de filtro personalizado y uno de estos nombres para especificar la posición de su filtro. Por ejemplo, se puede señalar mediante el atributo after :

Aquí están todos los atributos para especificar exactamente un lugar de su filtro en la pila:

  • after : describe el filtro inmediatamente después del cual se colocará un filtro personalizado en la cadena
  • before : define el filtro antes del cual nuestro filtro debe colocarse en la cadena
  • posición : permite reemplazar un filtro estándar en la posición explícita por un filtro personalizado

4. Conclusión

En este artículo rápido, creamos un filtro personalizado y lo conectamos a la cadena de filtros de Spring Security.

Como siempre, todos los ejemplos de código están disponibles en el proyecto de muestra de Github.