Keresse meg a regisztrált tavaszi biztonsági szűrőket

1. Áttekintés

A Spring Security a servlet szűrők láncolatán alapul. Minden szűrőnek külön felelőssége van, és a konfigurációtól függően szűrőket ad hozzá vagy távolít el.

Ebben az oktatóanyagban megbeszéljük a regisztrált tavaszi biztonsági szűrők megtalálásának különböző módjait.

2. Biztonsági hibakeresés

Először engedélyezzük a biztonsági hibakeresést, amely naplózza a részletes biztonsági információkat minden egyes kérésnél.

A. Segítségével engedélyezhetjük a biztonsági hibakeresést hibakeresés ingatlan:

@EnableWebSecurity (hibakeresés = true)

Ily módon, amikor kérést küldünk a szervernek, az összes kérelem információ naplózásra kerül.

Megtekinthetjük a teljes biztonsági szűrő láncot is:

Biztonsági szűrőlánc: [WebAsyncManagerIntegrationFilter SecurityContextPersistenceFilter HeaderWriterFilter LogoutFilter UsernamePasswordAuthenticationFilter // ...]

3. Naplózás

Ezután megtaláljuk a biztonsági szűrőket azáltal, hogy engedélyezzük a. Naplózását FilterChainProxy.

A naplózást a következő sor hozzáadásával engedélyezhetjük alkalmazás.tulajdonságok:

logging.level.org.springframework.security.web.FilterChainProxy = DEBUG

Itt van a kapcsolódó napló:

DEBUG o.s.security.web.FilterChainProxy - / foos / 1 a 12/1-es pozícióban további szűrő láncban; a következő szűrő kilövése: 'WebAsyncManagerIntegrationFilter' DEBUG o.s.security.web.FilterChainProxy - / foos / 1 a 12/2-es pozícióban további szűrő láncban; Szűrő kilövése: 'SecurityContextPersistenceFilter' DEBUG o.s.security.web.FilterChainProxy - / foos / 1 a 12/3-as 3-as pozícióban további szűrő láncban; égető szűrő: 'HeaderWriterFilter' DEBUG o.s.security.web.FilterChainProxy - / foos / 1 a 12-es 4-es pozíciójában további szűrő láncban; a szűrő kilövése: 'LogoutFilter' DEBUG o.s.security.web.FilterChainProxy - / foos / 1 a 12-es 5-ös helyzetében további szűrő láncban; Szűrő indítása: 'UsernamePasswordAuthenticationFilter' ...

4. A szűrők programszerű megszerzése

Most meglátjuk, hogyan lehet programszerűen beszerezni a regisztrált biztonsági szűrőket.

Majd használjuk FilterChainProxy hogy megkapja a biztonsági szűrőket.

Először írjuk be a springSecurityFilterChain bab:

@Autowired @Qualifier ("springSecurityFilterChain") privát Filter springSecurityFilterChain;

Itt a @ Minősítő a névvel springSecurityFilterChain típussal Szűrő ahelyett FilterChainProxy. Ennek oka, hogy a módszer springSecurityFilterChain () ban ben WebSecurityConfiguration, amely létrehozza a Spring Security szűrő láncot, visszatérési típust Szűrő és nem FilterChainProxy.

Ezután erre az objektumra vetjük FilterChainProxy és felhívja a getFilterChains () módszer:

public void getFilters () {FilterChainProxy filterChainProxy = (FilterChainProxy) springSecurityFilterChain; Lista lista = filterChainProxy.getFilterChains (); list.stream () .flatMap (lánc -> chain.getFilters (). stream ()) .forEach (szűrő -> System.out.println (filter.getClass ())); }

És itt van egy minta kimenet:

class org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter class org.springframework.security.web.context.SecurityContextPersistenceFilter class org.springframework.security.web.header.HeaderWriterWrit .logout.LogoutFilter osztály org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter ...

Vegye figyelembe, hogy a tavaszi Security 3.1 óta FilterChainProxy konfigurálása a SecurityFilterChain. A legtöbb alkalmazásnak azonban csak egy kell SecurityFilterChain.

5. Fontos tavaszi biztonsági szűrők

Végül vessünk egy pillantást néhány fontos biztonsági szűrőre:

  • FelhasználónévPasswordAuthenticationFilter: hitelesítési folyamat, alapértelmezés szerint válaszol a “/ login” URL-re
  • AnonymousAuthenticationFilter: ha nincs hitelesítési objektum a SecurityContextHolderben, akkor létrehoz egy névtelen hitelesítési objektumot, és oda teszi
  • FilterSecurityInterceptor: kivételeket vet fel, ha a hozzáférést megtagadják
  • ExceptionTranslationFilter: elkapni a Spring Security kivételeket

6. Következtetés

Ebben a rövid cikkekben azt kutattuk, hogyan lehet programszerűen és naplók segítségével megtalálni a regisztrált Spring Security szűrőket.

Mint mindig, a forráskód megtalálható a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found