Je me rends compte que le Printemps de sécurité de construire, sur la chaîne de filtres, qui va intercepter la demande, de détecter (l'absence de) l'authentification, la redirection d'authentification du point d'entrée ou de transmettre la demande d'autorisation de service, et éventuellement laisser la demande soit frappé le servlet ou de jeter l'exception de sécurité (non authentifié ou non autorisée). DelegatingFitlerProxy colles de ces filtres. Pour accomplir leurs tâches, ces filtrer l'accès à des services tels que UserDetailsService et AuthenticationManager.
Les filtres de la chaîne sont (dans l'ordre)
- SecurityContextPersistenceFilter (restaure l'Authentification à partir de JSESSIONID)
- UsernamePasswordAuthenticationFilter (effectue l'authentification)
- ExceptionTranslationFilter (attraper les exceptions à la sécurité de FilterSecurityInterceptor)
- FilterSecurityInterceptor (peut jeter l'authentification et l'autorisation des exceptions)
Je suis confus comment ces filtres sont utilisés. Est-ce que pour le printemps fourni form-login, UsernamePasswordAuthenticationFilter est utilisé seulement pour le /login, et ce dernier filtres ne sont pas? Le formulaire de login de l'espace de noms de l'élément d'auto-configuration de ces filtres? Est-ce que chaque demande (authentifié ou non) d'atteindre FilterSecurityInterceptor pour les non-url de connexion?
Que faire si je veux sécuriser mon API REST avec JWT-jeton, qui est extrait de la connexion? Je dois configurer deux noms de configuration http
des tags, des droits de l'homme? Autre pour le /login avec UsernamePasswordAuthenticationFilter
, et un autre pour le RESTE de l'url, avec des personnalisés JwtAuthenticationFilter
.
Ne configurez deux http
éléments de créer deux springSecurityFitlerChains
? Est - UsernamePasswordAuthenticationFilter
désactivé par défaut, jusqu'à ce que je déclare form-login
? Comment puis-je la remplacer SecurityContextPersistenceFilter
avec un, qui obtiendra Authentication
existantes JWT-token
plutôt que d' JSESSIONID
?