Un filtro personalizzato nella catena dei filtri Spring Security

1. Panoramica

In questo rapido articolo, ci concentreremo sulla scrittura di un filtro personalizzato per la catena di filtri Spring Security.

2. Creazione del filtro

Spring Security fornisce una serie di filtri per impostazione predefinita e la maggior parte delle volte questi sono sufficienti.

Ma ovviamente a volte è necessario implementare nuove funzionalità con la creazione di un nuovo filtro da utilizzare nella catena.

Inizieremo implementando org.springframework.web.filter.GenericFilterBean .

Il GenericFilterBean è una semplice javax.servlet.Filter implementazione implementazione che è primavera a conoscenza.

Passiamo all'implementazione: dobbiamo solo implementare un unico metodo:

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

3. Utilizzo del filtro nella configurazione della protezione

Siamo liberi di scegliere la configurazione XML o la configurazione Java per collegare il filtro alla configurazione Spring Security.

3.1. Configurazione Java

È possibile registrare il filtro a livello di codice sovrascrivendo il metodo configure da WebSecurityConfigurerAdapter . Ad esempio, funziona con il metodo addFilterAfter su un'istanza HttpSecurity :

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

Ci sono un paio di metodi possibili:

  • addFilterBefore (filtro, classe): aggiunge un filtro prima della posizione della classe di filtro specificata
  • addFilterAfter (filtro, classe) : aggiunge un filtro dopo la posizione della classe di filtro specificata
  • addFilterAt (filtro, classe) : aggiunge un filtro nella posizione della classe di filtro specificata
  • addFilter (filtro) : aggiunge un filtro che deve essere un'istanza o estendere uno dei filtri forniti da Spring Security

3.2. Configurazione XML

Puoi aggiungere il filtro alla catena utilizzando il tag del filtro personalizzato e uno di questi nomi per specificare la posizione del filtro. Ad esempio, può essere evidenziato dall'attributo after :

Ecco tutti gli attributi per specificare esattamente dove posizionare il tuo filtro nella pila:

  • dopo : descrive il filtro immediatamente dopo il quale verrà inserito un filtro personalizzato nella catena
  • prima - definisce il filtro prima del quale il nostro filtro deve essere posizionato nella catena
  • posizione : consente di sostituire un filtro standard nella posizione esplicita con un filtro personalizzato

4. Conclusione

In questo breve articolo, abbiamo creato un filtro personalizzato e lo abbiamo collegato alla catena di filtri Spring Security.

Come sempre, tutti gli esempi di codice sono disponibili nel progetto Github di esempio.