[Spring Security] SecurityFilterChain ๋ณด์ ์ค์ ๋ฉ์๋ ์ค๋ช
// ํน์ HTTP ์์ฒญ์ ๋ํ ์น ๊ธฐ๋ฐ ๋ณด์ ๊ตฌ์
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.authorizeHttpRequests(auth -> auth // ํน์ ๊ฒฝ๋ก์ ๋ํ ์ก์ธ์ค ์ค์ .
.requestMatchers("/login", "/signup", "/user").permitAll()
.anyRequest().authenticated())
.formLogin(formLogin -> formLogin // ํผ ๊ธฐ๋ฐ ๋ก๊ทธ์ธ ์ค์
.loginPage("/login")
.defaultSuccessUrl("/articles")
).logout(logout -> logout // ๋ก๊ทธ์์ ์ค์
.logoutSuccessUrl("/login")
.invalidateHttpSession(true)
)
.csrf(AbstractHttpConfigurer::disable) // csrd ๋นํ์ฑํ
.build();
}
๋ด๊ฐ ์ง ์ฝ๋๋ ์์ ๊ฐ์.
โ
โ
์ฌ๊ธฐ์ ํฌ๊ฒ ๋ณด๋ฉด
.authorizeHttpRequests()
.formLogin()
.logout()
.csrf()
์ด๋ ๊ฒ ์์.
โ
๋์ค๋ ๋ฉ์๋๋ค์ HttpSecurity ํ์ ์ http ๊ฐ์ฒด์ ๋ถ๋ ๋ฉ์๋๋ค์.
HttpSecurity ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์ค์ ์ต์ ์ด๋ผ๊ณ ํจ.
โ
authorizeHttpRequests(): ์ด ๋ฉ์๋๋ URL ์์ฒญ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ค์ ํ๋ ๋ณด์ ๋ฒ์๋ฅผ ์ง์
formLogin(): ๋ก๊ทธ์ธ ํผ์ ๊ด๋ จ๋ ์ค์ ์ ๋ด๋นํ๋ ๋ณด์ ๋ฒ์
logout(): ๋ก๊ทธ์์๊ณผ ๊ด๋ จ๋ ์ค์ ์ ๋ด๋นํ๋ ๋ฒ์
< authorizeHttpRequests( ) >
.requestMatchers() : ํน์ ์์ฒญ๊ณผ ์ผ์นํ๋ URL์ ๋ํ ์์ธ์ค๋ฅผ ์ค์
.permitAll() : ๋๊ตฌ๋ ์ธ์ฆ,์ธ๊ฐ ์์ด ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ
.anyRequest() : ์์์ ์ค์ ํ URL ์ด์ธ์ ์์ฒญ์ ๋ํด
.authenticated() : ์ธ๊ฐ๋ ํ์X, ์ธ์ฆ์ ๋์ด์์ด์ผ ์ ๊ทผ ๊ฐ๋ฅ
โ
< formLogin( ) >
.loginPage() : ๋ก๊ทธ์ธ ํ์ด์ง์ ๊ฒฝ๋ก๋ฅผ ์ค์
.defaultSuccessUrl() : ๋ก๊ทธ์ธ ์๋ฃ๋์๋ ์ด๋ํ ๊ฒฝ๋ก
โ
< logout( ) >
.logOutSuccessUrl() : ๋ก๊ทธ์์ ํ ์ด๋ํ ๊ฒฝ๋ก
.invalidateHttpSession() : ๋ก๊ทธ์์ ์ดํ ์ธ์ ์ ์ ์ฒด ์ญ์ ํ ์ง ์ฌ๋ถ
โ
< csrf( ) >
.csrf() : csrf ๊ณต๊ฒฉ ๋ฐฉ์งํ๊ธฐ ์ํด์ ํ์ฑํํด๋๋๊ฒ ์ข์๋ฐ, ์ง๊ธ์ ์ค์ต ์ค์ด๋๊น ๊บผ๋๊ฒ ์
โ