Een aangepast filter in de Spring Security Filter Chain

1. Overzicht

In dit korte artikel zullen we ons concentreren op het schrijven van een aangepast filter voor de Spring Security-filterketen.

2. Het filter maken

Spring Security biedt standaard een aantal filters, en meestal zijn deze voldoende.

Maar soms is het natuurlijk nodig om nieuwe functionaliteit te implementeren met een nieuw filter voor gebruik in de keten.

We beginnen met het implementeren van het org.springframework.web.filter.GenericFilterBean.

De GenericFilterBean is eenvoudig javax.servlet.Filter implementatie implementatie die Spring bewust is.

Op naar de implementatie - we hoeven maar één methode te implementeren:

openbare klasse CustomFilter breidt GenericFilterBean uit {@Override public void doFilter (ServletRequest-verzoek, ServletResponse-antwoord, FilterChain-keten) gooit IOException, ServletException {chain.doFilter (verzoek, antwoord); }}

3. Gebruik van het filter in de beveiligingsconfiguratie

We zijn vrij om te kiezen voor XML-configuratie of Java-configuratie om het filter aan te sluiten op de Spring Security-configuratie.

3.1. Java-configuratie

U kunt het filter programmatisch registreren om het configureren methode van WebSecurityConfigurerAdapter. Het werkt bijvoorbeeld met de addFilterAfter methode op een HttpSecurity voorbeeld:

@Configuration openbare klasse CustomWebSecurityConfigurerAdapter breidt WebSecurityConfigurerAdapter uit {@Override protected void configure (HttpSecurity http) gooit uitzondering {http.addFilterAfter (nieuw CustomFilter (), BasicAuthenticationFilter.class); }} 

Er zijn een aantal mogelijke methoden:

  • addFilterBefore (filter, class) - voegt een filter vóór de positie van het gespecificeerde filter klasse
  • addFilterAfter (filter, klasse) - voegt een filter na de positie van het gespecificeerde filter klasse
  • addFilterAt (filter, klasse) - voegt een filter op de locatie van het opgegeven filter klasse
  • addFilter (filter) - voegt een filter dat moet een exemplaar zijn van of een uitbreiding zijn van een van de filters die door Spring Security worden geleverd

3.2. XML-configuratie

U kunt het filter aan de ketting toevoegen met de aangepast filter tag en een van deze namen om de positie van uw filter te specificeren. Het kan bijvoorbeeld worden aangegeven door de na attribuut:

Hier zijn alle attributen om de exacte plaats van uw filter in de stapel te specificeren:

  • na - beschrijft het filter direct waarna een custom filter in de keten wordt geplaatst
  • voordat - definieert het filter waarvoor ons filter in de ketting moet worden geplaatst
  • positie - maakt het mogelijk om een ​​standaardfilter in de expliciete positie te vervangen door een aangepast filter

4. Conclusie

In dit korte artikel hebben we een aangepast filter gemaakt en dat aangesloten op de filterketen van Spring Security.

Zoals altijd zijn alle codevoorbeelden beschikbaar in het Github-voorbeeldproject.