Aucun haricot nommé "springSecurityFilterChain" est défini
1. Le problème
Cet article décrit un problème de configuration de Spring Security: le processus d’amorçage d’application lançant l’exception suivante:
SEVERE: Exception starting filter springSecurityFilterChain
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No bean named 'springSecurityFilterChain' is defined
Lectures complémentaires:
Introduction à Java Config pour Spring Security
Guide rapide et pratique de Java Config pour Spring Security
Spring Security 5 - Connexion à OAuth2
Apprenez à authentifier les utilisateurs avec Facebook, Google ou d'autres informations d'identification à l'aide de OAuth2 dans Spring Security 5.
Prise en charge asynchrone de Servlet 3 avec Spring MVC et Spring Security
Introduction rapide à la prise en charge de Spring Security pour les demandes asynchrones dans Spring MVC.
2. La cause
La cause de cette exception est simple - Spring Security recherche un bean nomméspringSecurityFilterChain (par défaut) et ne peut pas le trouver. Ce bean est requis par lesSpring Security Filter principaux - lesDelegatingFilterProxy - définis dans lesweb.xml:
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
Ceci est juste un proxy qui délègue toute sa logique au beanspringSecurityFilterChain.
3. La solution
La raison la plus courante pour laquelle ce bean est absent du contexte est que la configuration XML de sécurité ano <http> element défini:
Si la configuration XML utilise l'espace de noms de sécurité - comme dans l'exemple ci-dessus, déclarera simple <http> element garantira que le bean filtre est créé et que tout démarre correctement:
Une autre raison possible est quethe security configuration is not imported at all dans le contexte global de l'application Web.
Si le fichier de configuration XML de sécurité est nomméspringSecurityConfig.xml, assurez-vous quethe resource is imported:
@ImportResource({"classpath:springSecurityConfig.xml"})
Ou en XML:
Enfin, le nom par défaut du bean filtre peut être modifié dans leweb.xml - généralement pour utiliser un filtre existant avec Spring Security:
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
targetBeanName
customFilter
4. Conclusion
Cet article décrit un problème très spécifique de Spring Security - le bean de chaîne de filtre manquant - et présente les solutions à ce problème courant.