Spring Security
authentication, authorization, SecurityFilterChain
Spring Security
A Spring Security az authentication és authorization alaprétege a Spring alkalmazásokban.
1. Definíció
Az authentication azt dönti el, ki a felhasználó, az authorization pedig azt, mit tehet. A modern konfigurációban SecurityFilterChain, UserDetailsService, PasswordEncoder és szabályalapú authorizeHttpRequests jellemző.
2. Alapfogalmak
Mi történik a háttérben
Az authentication azt dönti el, ki a felhasználó, az authorization pedig azt, mit tehet. A modern konfigurációban SecurityFilterChain, UserDetailsService, PasswordEncoder és szabályalapú authorizeHttpRequests jellemző.
Mikor hasznos
A Spring Security az authentication és authorization alaprétege a Spring alkalmazásokban. Interjún érdemes kiemelni a tipikus használati helyzeteket és a kapcsolódó Spring annotációkat.
Mit kérdeznek róla
Gyakori kérdés a Spring Security trade-offjai, hibakeresése és a tipikus production csapdák.
3. Gyakorlati használat
- Használj Spring Security megoldást akkor, amikor a probléma tényleg ezt indokolja.
- Konfigurációt és annotációt együtt nézd, mert Springben a kettő együtt adja a viselkedést.
- Debugolásnál mindig nézd a startup logot, a bean graphot és az aktív profilokat.
- Törekedj kis, egyértelműen felelős komponensekre.
- Interjún nevezd meg a tipikus production trade-offot is, ne csak az annotációt.
4. Kód példák
Az alábbi példa a(z) Spring Security témát mutatja valós Spring annotációkkal.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
class SecurityConfig {
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.csrf(csrf -> csrf.disable())
.authorizeHttpRequests(auth -> auth
.requestMatchers("/public/**").permitAll()
.anyRequest().authenticated())
.httpBasic(Customizer.withDefaults())
.build();
}
@Bean
PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
A jelszót soha ne plain textben tárold; PasswordEncoder kötelező.
5. Trade-offok
- Konvenció vs explicit konfiguráció — A Spring gyorsít a konvenciókkal, de néha explicit beavatkozás kell a kiszámítható működéshez.
- Gyors fejlesztés vs átláthatóság — A kevesebb boilerplate jó, de a túl sok keretrendszer-magic nehezítheti a debugolást.
- Absztrakció vs kontroll — Magasabb absztrakcióval gyorsabb a fejlesztés, de a low-level viselkedést is érteni kell.
6. Gyakori hibák
- Csak annotációt memorizálni a mögöttes runtime működés helyett.
- A default viselkedést megváltoztatni anélkül, hogy értenéd a következményeket.
- Túl nagy komponenseket fenntartani gyenge határokkal.
- Logok és diagnosztikai eszközök figyelmen kívül hagyása.
- A tesztstratégiát nem a konkrét réteghez igazítani.
7. Senior szintű meglátások
- A senior Spring fejlesztő azt is nézi, milyen proxy, bean post-processor vagy filter dolgozik a háttérben.
- A legtöbb nehéz bug nem annotációs, hanem lifecycle- és sorrendprobléma.
- Production gondolkodásnál számít a startup idő, memória, observability és rollback-stratégia is.
8. Szószedet
- Spring Security: A témához tartozó Spring fogalom vagy mechanizmus.
- Bean: Spring által menedzselt objektum.
- Proxy: Köztes objektum, amely extra viselkedést adhat.
- Configuration: A runtime viselkedést beállító property vagy bean definíció.
- Context: A Spring container aktuális alkalmazásállapota.
9. Gyorsreferencia
- A Spring Security az authentication és authorization alaprétege a Spring alkalmazásokban.
- Értsd a mögöttes lifecycle-t.
- Ne csak annotációt, hanem trade-offot is mondd interjún.
- Production bugnál először log, bean graph, active profile.
- A legegyszerűbb működő megoldás többnyire a legjobb.
🎮 Játékok
8 kérdés