Spring Security 6 & JWT Authentication · Lekcja

Zrozumienie łańcucha filtrów Spring Security

Zajrzyj pod maskę Spring Security 6, aby zrozumieć, jak łańcuch filtrów serwletów przetwarza każde żądanie i jaką rolę odgrywa w nim uwierzytelnianie.

Lekcja 4 z 413 kroki

Zrozumienie łańcucha filtrów Spring Security to bezpłatna lekcja Spring Security 6 & JWT Authentication na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Spring Security 6 & JWT Authentication, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Spring Security 6 & JWT Authentication zawiera 4 lekcji w sumie.

Jak zabezpieczane są żądania

Jak więc faktycznie sprawdzane jest każde żądanie? Łańcuch filtrów bezpieczeństwa — seria filtrów servletowych, które Spring umieszcza przed kontrolerami.

Czym jest filtr servletowy?

Servletowy filtr Filter przechwytuje żądania i odpowiedzi HTTP, zanim dotrą one do Państwa kodu. Spring Security jest niemal w całości zbudowany z takich filtrów.

DelegatingFilterProxy

Rzeczywisty filtr servletowy, DelegatingFilterProxy, przekazuje każde żądanie do beana zarządzanego przez Spring — łącząc świat servletów z kontekstem Spring.

FilterChainProxy

Za tym proxy znajduje się FilterChainProxy, który przechowuje co najmniej jedną instancję SecurityFilterChain i kieruje każde żądanie do tej, która pasuje.

Najważniejsze filtry w kolejności działania

Filtry są uruchamiane w ustalonej kolejności: SecurityContextHolderFilter ładuje kontekst, filtr uwierzytelniania obsługuje logowanie, a AuthorizationFilter egzekwuje reguły dostępu.

Definiowanie beana SecurityFilterChain

W Spring Security 6 całą konfigurację definiuje się przez zadeklarowanie beana SecurityFilterChain — nowoczesnego zastępstwa dla WebSecurityConfigurerAdapter. Szczegóły znajdują się poniżej.

@Bean
SecurityFilterChain chain(HttpSecurity http) throws Exception {
    http.authorizeHttpRequests(a -> a.anyRequest().authenticated())
        .formLogin(Customizer.withDefaults());
    return http.build();
}

Gdzie znajduje się SecurityContext

Po zalogowaniu obiekt Authentication jest przechowywany w SecurityContext i pozostaje dostępny za pośrednictwem SecurityContextHolder przez resztę żądania.

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

Zezwalanie na dostęp do wybranych ścieżek

Można przepuszczać publiczne ścieżki, jednocześnie zabezpieczając pozostałe — wszystko w ramach tego samego łańcucha. Kod używa permitAll() dla /public oraz authenticated() dla wszystkich pozostałych ścieżek.

http.authorizeHttpRequests(a -> a
    .requestMatchers('/public/**').permitAll()
    .anyRequest().authenticated());

Wiele łańcuchów filtrów

Można zarejestrować kilka beanów SecurityFilterChain z użyciem securityMatcher, aby ścieżki API i aplikacji internetowej miały różne reguły. Wygrywa pierwszy pasujący łańcuch.

http.securityMatcher('/api/**');

Dodawanie własnego filtra

Własny filtr można umieścić w dokładnie określonym miejscu za pomocą addFilterBefore — jest to podstawa przetwarzania JWT, które zostanie zbudowane później w tym kursie.

http.addFilterBefore(myFilter, UsernamePasswordAuthenticationFilter.class);

Dlaczego ma to znaczenie

Znajomość łańcucha wyjaśnia, dlaczego kolejność ma znaczenie, gdzie odbywa się uwierzytelnianie i autoryzacja oraz dokładnie w którym miejscu należy podłączyć własny filtr JWT.

Szybkie sprawdzenie

Jak w Spring Security 6 definiuje się konfigurację zabezpieczeń?

Podsumowanie

Podsumowanie: żądania przepływają od DelegatingFilterProxy przez FilterChainProxy do SecurityFilterChain; filtry są uruchamiane w kolejności — najpierw uwierzytelnianie, potem autoryzacja — a addFilterBefore wstawia własne filtry.

Bezpłatny start

Ucz się Java dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
12
Lekcje
48

Często zadawane pytania

Czy lekcja „Zrozumienie łańcucha filtrów Spring Security” jest bezpłatna?

Tak — pełny tekst „Zrozumienie łańcucha filtrów Spring Security” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Spring Security 6 & JWT Authentication, przejdź na CoddyKit PRO. Kurs Spring Security 6 & JWT Authentication zawiera 4 lekcji w sumie.

Co nauczysz się w „Zrozumienie łańcucha filtrów Spring Security”?

Zajrzyj pod maskę Spring Security 6, aby zrozumieć, jak łańcuch filtrów serwletów przetwarza każde żądanie i jaką rolę odgrywa w nim uwierzytelnianie. Ćwiczysz Spring Security 6 & JWT Authentication z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Spring Security 6 & JWT Authentication?

Nie wymagamy żadnego doświadczenia. Spring Security 6 & JWT Authentication w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Zrozumienie łańcucha filtrów Spring Security”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Spring Security 6 & JWT Authentication?

Tak. Każda lekcja Spring Security 6 & JWT Authentication zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wprowadzenie do Spring Security 6
  2. Konfiguracja projektu i zależności
  3. Uwierzytelnianie użytkowników w pamięci
  4. Zrozumienie łańcucha filtrów Spring Security
← Powrót do Spring Security 6 & JWT Authentication