Empêcher le Printemps de Démarrage de l'enregistrement de l'un de Printemps filtre de Sécurité
Je voudrais désactiver l'un des Printemps les filtres de Sécurité dans la chaîne de sécurité.
J'ai déjà vu Empêcher le Printemps de Démarrage de l'enregistrement d'un filtre de servlet question - et acceptées devrait fonctionner, mais, malheureusement, n'est pas.
Avec le code:
@Bean
public FilterRegistrationBean registration(AnonymousAuthenticationFilter filter) {
FilterRegistrationBean registration = new FilterRegistrationBean(filter);
registration.setEnabled(false);
return registration;
}
Printemps de Démarrage seront rapidement annoncer il n'est pas admissible bean, qui est triste:
Causés par: org.springframework.les haricots.usine.NoSuchBeanDefinitionException: Pas de qualification bean de type [org.springframework.de sécurité.web.l'authentification.AnonymousAuthenticationFilter] trouvé pour la dépendance: attendre au moins 1 fève qui se qualifie comme autowire candidat à cette dépendance. La dépendance des annotations: {}
Après la création d'un autre bean:
@SuppressWarnings("deprecation") //Oh, there be dragons
@Bean
public AnonymousAuthenticationFilter anonymousAuthenticationFilter() {
return new AnonymousAuthenticationFilter();
}
Je suis attaqué avec
Causés par: java.lang.IllegalArgumentException: [échec de l'Assertion] - cet argument Chaîne doit avoir la longueur; il ne doit pas être null ou vide
Qui est entièrement understable; Assert
s dans afterPropertiesSet()
méthode https://github.com/spring-projects/spring-security/blob/master/web/src/main/java/org/springframework/security/web/authentication/AnonymousAuthenticationFilter.java sont en m'empêchant d'utiliser le constructeur par défaut. En utilisant une autre approche:
@Bean
public AnonymousAuthenticationFilter anonymousAuthenticationFilter() {
//it will be disabled anyway so...
return new AnonymousAuthenticationFilter("_", new Object(), new ArrayList<GrantedAuthority>());
}
Tout est de façon plus agréable:
INFO 4916 --- [ost-startStop-1] o.s.b.c.incorporé.FilterRegistrationBean : Filtre anonymousAuthenticationFilter n'a pas été enregistrée (désactivé)
DEBUG 4916 --- [ost-startStop-1] o.s.de sécurité.web.FilterChainProxy : Initialisation du filtre 'springSecurityFilterChain'
DEBUG 4916 --- [ost-startStop-1] o.s.de sécurité.web.FilterChainProxy : Filtre "springSecurityFilterChain' configurée avec succès
Mais après l'accès à certaines ressources que j'ai obtenu:
DEBUG 4916 --- [nio-8080-exec-3] o.s.de sécurité.web.FilterChainProxy : /utilisateur à la position 10 du 13 au filtre supplémentaire de la chaîne d'; cuisson Filtre: 'AnonymousAuthenticationFilter'
DEBUG 4916 --- [nio-8080-exec-3] o.s.s.w.un.AnonymousAuthenticationFilter : Peuplée SecurityContextHolder avec jeton anonyme: 'org.springframework.security.authentication.AnonymousAuthenticationToken@90572420: Directeur: anonymousUser; les informations d'Identification: [PROTÉGÉS]; Authentifié: true; Détails: org.springframework.security.web.authentication.WebAuthenticationDetails@255f8: Adresse_ip_distante: 127.0.0.1; SessionId: 6B9D974A4634548750FE78C18F62A6B0; Accordé Autorités: ROLE_ANONYMOUS'
Pour quelque raison AnonymousAuthenticationFilter est encore à travailler.
La question: Est-il un moyen de désactiver ces filtres au Printemps de Démarrage de l'application?
Vous devez vous connecter pour publier un commentaire.
Printemps de Sécurité bundles tous les Filtres à l'intérieur de la
HttpSecurity
de configuration. Pour désactiver l'authentification anonyme, utilisez les éléments suivants:Si vous souhaitez désactiver tous les paramètres par défaut dans le Printemps de Sécurité, vous pouvez passer à true dans le constructeur de la classe parent de désactiver par défaut. Par exemple: