Ein benutzerdefinierter Filter in der Spring Security-Filterkette

Ein benutzerdefinierter Filter in der Spring-Sicherheitsfilterkette

1. Überblick

In diesem kurzen Artikel konzentrieren wir uns darauf, einen benutzerdefinierten Filter für die Spring Security-Filterkette zu schreiben.

Weitere Lektüre:

Frühlingssicherheit - @PreFilter und @PostFilter

Erfahren Sie anhand praktischer Beispiele, wie Sie die Anmerkungen @PreFilter und @PostFilter Spring Security verwenden.

Read more

Einführung in Java Config für Spring Security

Eine schnelle und praktische Anleitung zu Java Config für Spring Security

Read more

Automatische Konfiguration der Spring Boot-Sicherheit

Eine schnelle und praktische Anleitung zur Standardkonfiguration von Spring Boot für Spring Security.

Read more

2. Filter erstellen

Spring Security bietet standardmäßig eine Reihe von Filtern, die in den meisten Fällen 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 vonorg.springframework.web.filter.GenericFilterBean.

GenericFilterBean ist eine einfache Implementierungsimplementierung vonjavax.servlet.Filter, die Spring-fähig ist.

Auf 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 den Filter programmgesteuert registrieren, indem Sie die Methodeconfigure vonWebSecurityConfigurerAdapter überschreiben. Beispielsweise funktioniert es mit der MethodeaddFilterAfterauf einer Instanz vonHttpSecurity:

@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:

3.2. XML-Konfiguration

Sie können den Filter der Kette hinzufügen, indem Sie das Tagcustom-filter und eines vonthese names verwenden, um die Position Ihres Filters anzugeben. Zum Beispiel kann durch das Attributafterdarauf hingewiesen werden:


    


Hier sind alle Attribute, um genau anzugeben, wo sich Ihr Filter im Stapel befindet:

  • after - beschreibt den Filter unmittelbar danach, 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 verknüpft.

Wie immer sind alle Codebeispiele insample Github project verfügbar.