Et tilpasset filter i vårsikkerhetsfilterkjeden
1. Oversikt
I denne raske artikkelen vil vi fokusere på å skrive et tilpasset filter for Spring Security-filterkjeden.
2. Opprette filteret
Spring Security tilbyr en rekke filtre som standard, og det er oftest nok.
Men selvfølgelig er det noen ganger nødvendig å implementere ny funksjonalitet med å opprette et nytt filter som skal brukes i kjeden.
Vi begynner med å implementere org.springframework.web.filter.GenericFilterBean.
De GenericFilterBean er en enkel javax.servlet.Filter implementeringsimplementering som er vårbevisst.
På implementeringen - vi trenger bare å implementere en enkelt metode:
offentlig klasse CustomFilter utvider GenericFilterBean {@Override offentlig ugyldig doFilter (ServletRequest forespørsel, ServletResponse respons, FilterChain kjede) kaster IOException, ServletException {chain.doFilter (forespørsel, svar); }}
3. Bruke filteret i sikkerhetskonfigurasjonen
Vi kan velge enten XML-konfigurasjon eller Java-konfigurasjon for å koble filteret til Spring Security-konfigurasjonen.
3.1. Java-konfigurasjon
Du kan registrere filteret programmatisk som overstyrer konfigurere metode fra WebSecurityConfigurerAdapter. For eksempel fungerer det med addFilterAfter metode på en HttpSikkerhet forekomst:
@Configuration offentlig klasse CustomWebSecurityConfigurerAdapter utvider WebSecurityConfigurerAdapter {@Override-beskyttet ugyldig konfigurering (HttpSecurity http) kaster Unntak {http.addFilterAfter (ny CustomFilter (), BasicAuthenticationFilter.class); }}
Det er et par mulige metoder:
- addFilterBefore (filter, klasse) - legger til en filter før posisjonen til det angitte filteret klasse
- addFilterAfter (filter, klasse) - legger til en filter etter posisjonen til det spesifiserte filteret klasse
- addFilterAt (filter, klasse) - legger til en filter på stedet for det spesifiserte filteret klasse
- addFilter (filter) - legger til en filter det må være en forekomst av eller utvide et av filtrene som leveres av Spring Security
3.2. XML-konfigurasjon
Du kan legge til filteret i kjeden ved hjelp av tilpasset filter og et av disse navnene for å spesifisere posisjonen til filteret ditt. For eksempel kan det påpekes av etter Egenskap:
Her er alle attributter for å spesifisere nøyaktig et sted filteret ditt i bunken:
- etter - beskriver filteret umiddelbart etter hvilket et tilpasset filter blir plassert i kjeden
- før - definerer filteret før filteret vårt skal plasseres i kjeden
- posisjon - tillater å erstatte et standardfilter i den eksplisitte posisjonen med et tilpasset filter
4. Konklusjon
I denne raske artikkelen opprettet vi et tilpasset filter og koblet det inn i Spring Security-filterkjeden.
Som alltid er alle kodeeksempler tilgjengelige i Github-prosjektet.