Ein benutzerdefinierter Filter in der Spring Security Filterkette

1. Übersicht

In diesem kurzen Artikel konzentrieren wir uns auf das Schreiben eines benutzerdefinierten Filters für die Spring Security-Filterkette.

2. Erstellen des Filters

Spring Security bietet standardmäßig eine Reihe von Filtern, die meistens ausreichen.

Aber manchmal ist es natürlich notwendig, neue Funktionen zu implementieren und einen neuen Filter für die Kette zu erstellen.

Wir beginnen mit der Implementierung von org.springframework.web.filter.GenericFilterBean .

Die GenericFilterBean ist eine einfache javax.servlet.Filter Implementierung Implementierung , den Frühling bewusst ist.

Weiter zur Implementierung - wir müssen nur eine einzige Methode implementieren:

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

3. Verwenden des Filters in der Sicherheitskonfiguration

Es steht uns frei, entweder die XML-Konfiguration oder die Java-Konfiguration zu wählen, um den Filter mit der Spring Security-Konfiguration zu verbinden.

3.1. Java-Konfiguration

Sie können die Filter registrieren programmatisch die zwingenden configure Methode von WebSecurityConfigurerAdapter . Beispielsweise funktioniert es mit der addFilterAfter- Methode auf einer HttpSecurity- Instanz:

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

Es gibt einige mögliche Methoden:

  • addFilterBefore (Filter, Klasse) - fügt einen Filter vor der Position des festgelegten Filterklasse
  • addFilterAfter (Filter, Klasse) - fügt einen Filter nach der Position des angegebenen Filterklasse
  • addFilterAt (Filter, Klasse) - fügt einen Filter an der Stelle des angegebenen Filterklasse
  • addFilter (Filter) - Fügt einen Filter hinzu , der eine Instanz eines der von Spring Security bereitgestellten Filter sein oder diesen erweitern muss

3.2. XML-Konfiguration

Sie können den Filter mit dem benutzerdefinierten Filter- Tag und einem dieser Namen zur Kette hinzufügen , um die Position Ihres Filters anzugeben. Zum Beispiel kann durch das Attribut after darauf hingewiesen werden :

Hier sind alle Attribute, um genau eine Stelle anzugeben, an der sich Ihr Filter im Stapel befindet:

  • after - beschreibt den Filter, nach dem ein benutzerdefinierter Filter in die Kette eingefügt wird
  • before - Definiert den Filter, vor dem unser Filter in der Kette platziert werden soll
  • position - Ermöglicht das Ersetzen eines Standardfilters an der expliziten Position durch einen benutzerdefinierten Filter

4. Fazit

In diesem kurzen Artikel haben wir einen benutzerdefinierten Filter erstellt und diesen mit der Spring Security-Filterkette verbunden.

Wie immer sind alle Codebeispiele im Beispielprojekt Github verfügbar.