Un filtre personnalisé dans la chaîne de filtres de sécurité Spring

Un filtre personnalisé dans la chaîne de filtres de sécurité Spring

1. Vue d'ensemble

Dans cet article rapide, nous nous concentrerons sur l'écriture d'un filtre personnalisé pour la chaîne de filtres Spring Security.

Lectures complémentaires:

Spring Security - @PreFilter et @PostFilter

Apprenez à utiliser les annotations @PreFilter et @PostFilter Spring Security à l'aide d'exemples pratiques.

Read more

Introduction à Java Config pour Spring Security

Guide rapide et pratique de Java Config pour Spring Security

Read more

Configuration automatique de la sécurité de démarrage du printemps

Un guide rapide et pratique de la configuration Spring Security par défaut de Spring Boot.

Read more

2. Création du filtre

Spring Security fournit un certain nombre de filtres par défaut, qui suffisent la plupart du temps.

Mais bien sûr, il est parfois nécessaire de mettre en œuvre de nouvelles fonctionnalités en créant un nouveau filtre à utiliser dans la chaîne.

Nous allons commencer par implémenter lesorg.springframework.web.filter.GenericFilterBean.

LeGenericFilterBean est une implémentation d'implémentation dejavax.servlet.Filter simple qui prend en charge Spring.

En ce qui concerne la mise en œuvre, nous n’avons besoin que d’une seule méthode:

public class CustomFilter extends GenericFilterBean {

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

3. Utilisation du filtre dans la configuration de sécurité

Nous sommes libres de choisir la configuration XML ou la configuration Java pour câbler le filtre dans la configuration Spring Security.

3.1. Configuration Java

Vous pouvez enregistrer le filtre en remplaçant par programme la méthodeconfigure deWebSecurityConfigurerAdapter. Par exemple, il fonctionne avec la méthodeaddFilterAfter sur une instanceHttpSecurity:

@Configuration
public class CustomWebSecurityConfigurerAdapter
  extends WebSecurityConfigurerAdapter {

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

Il y a deux méthodes possibles:

3.2. Configuration XML

Vous pouvez ajouter le filtre à la chaîne en utilisant la balisecustom-filter et l'une desthese names pour spécifier la position de votre filtre. Par exemple, il peut être signalé par l'attributafter:


    


Voici tous les attributs pour spécifier exactement l'emplacement de votre filtre dans la pile:

  • after - décrit le filtre immédiatement après lequel un filtre personnalisé sera placé dans la chaîne

  • before - définit le filtre avant lequel notre filtre doit être placé dans la chaîne

  • position - permet de remplacer un filtre standard en position explicite par un filtre personnalisé

4. Conclusion

Dans cet article rapide, nous avons créé un filtre personnalisé et l'avons intégré à la chaîne de filtres Spring Security.

Comme toujours, tous les exemples de code sont disponibles dans lessample Github project.