[Spring Security] HttpSecurity์ WebSecurity
๐ WebSecurity
WebSecurity
๋ ์ ์ญ์ ์ธ ๋ณด์์ ๋ด๋นํ๋ค. SecurityBuilder
์ ๊ตฌํ์ฒด๋ก FilterChainProxy
๋ฅผ ์์ฑ ๋ฐ ์ค์ ํ๋ ์ญํ ์ ํ๋ค.
FilterChainProxy
๋ ๋ชจ๋ ์น ์์ฒญ์ ๊ฐ์ฅ ๋จผ์ ๋ฐ์ ์ด๋ค SecurityFilterChain
์ ์ ์ฉํ ์ง ๊ฒฐ์ ํ๋ค.
1
2
3
4
5
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring()
.requestMatchers("/css/**", "/js/**", "/images/**", "/favicon.ico");
}
ํ์ฌ๋ WebSecurityCustomizer
๋น์ ๋ฑ๋กํ์ฌ ์ค์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
WebSecurity
๋ฅผ ํตํด ํน์ ๊ฒฝ๋ก์ ์์ฒญ์ ํํฐ ์ฒด์ธ์์ ์์ ํ ์ ์ธํ ์์๋๋ฐ, ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ignoring
๋ฉ์๋์ด๋ค. ์ฆ, ignoring
๋ฉ์๋์ ํน์ ๊ฒฝ๋ก๋ฅผ ๋ช
์ํ๋ฉด ํด๋น ๊ฒฝ๋ก๋ค์ ๋ํด FilterChainProxy
๊ฐ ์์ ๋์ํ์ง ์๋๋ก ํ๋ค.
์ด๋ ๊ณง ์ค์ ๋ ๊ฒฝ๋ก๋ค์ ๋ํด ์ธ์ฆ/์ธ๊ฐ ์ ์ฐจ๋ฅผ ์งํํ์ง ์๊ณ , ์ฌ๋ฌ๊ฐ์ง ๋ณด์ ๊ธฐ๋ฅ๋ค์ ๊ฑฐ์น์ง ์๋๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ธ ๋ณด์ ์ ์ฐจ๋ ๊ฑฐ์น๋ฉด์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํด์ ํ์ ํ HttpSecurity
์ permitAll
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
1
2
3
4
5
6
@Bean(name = AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME)
public Filter springSecurityFilterChain() throws Exception {
// ...
return this.webSecurity.build();
}
build
๋ฉ์๋๋ ์ต์ข
์ ์ผ๋ก FilterChainProxy
๋ผ๋ ๋จ์ผ Filter
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
๐ HttpSecurity
HttpSecurity
๋ HTTP ์์ฒญ ๋จ์์ ์ธ๋ถ ๋ณด์์ ๋ด๋นํ๋ค. WebSecurity
๋ฅผ ํต๊ณผํ ์์ฒญ์ด ์ค์ ๋ก ์ด๋ค ์ธ์ฆ/์ธ๊ฐ ๊ท์น์ ๋ฐ๋ผ์ผ ํ๋์ง ์ ์ํ๋ค.
HttpSecurity
์ญ์ SecurityBuilder
์ ๊ตฌํ์ฒด๋ก, WebSecurity
๋ณด๋ค ๋ ์ธ๋ถ์ ์ธ ๊ท์น์ ์ ์ํ๋ค. ๋ค๋ฅด๊ฒ ๋งํ๋ฉด WebSecurity
๊ฐ HttpSecurity
๋ณด๋ค ์์ ๊ฐ๋
์ด๋ผ๊ณ ํ ์ ์๋ค. ํ๋์ HttpSecurity
์ค์ ์ ํ๋์ SecurityFilterChain
์์์ฑํ๋ค. ์ญ์ ์ด๋ build
๋ฉ์๋๋ฅผ ํตํด ์์ฑ๋๋ค.
authorizeHttpRequests
๋ฉ์๋๋ฅผ ํตํด URL ํจํด์ ๋ฐ๋ฅธ ์ญํ , ๊ถํ ๊ธฐ๋ฐ์ ์ ๊ทผ ํ์ฉ ๋๋ ๊ฑฐ๋ถ ๊ท์น์ ์ค์ ํ ์ ์๋ค.
formLogin
, oauth2Login
๋ฑ ์ฌ๋ฌ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ค์ ํ ์ ์๋ค.
csrf
, cors
๋ฑ์ผ๋ก ๊ฐ์ข
๋ณด์ ๊ธฐ๋ฅ์ ์ค์ ํ ์ ์๋ค.
permitAll
์ ํน์ ๊ฒฝ๋ก ๋ช
์ํ๋ฉด ์ธ์ฆ ๊ฒฐ๊ณผ ๋ฌด์
๐ WebSecurity vs. HttpSecurity
ํ๋ก ์ ๋ฆฌํด๋ณด์๋ค.
๊ตฌ๋ถ | WebSecurity | HttpSecurity |
---|---|---|
์ญํ | ์ ์ญ ๋ณด์ ์ค์ | HTTP ์์ฒญ ๊ธฐ๋ฐ ๋ณด์ ์ค์ |
์ ์ฉ ๋ ๋ฒจ | Spring Securityย ํํฐ ์ฒด์ธ ์ง์ ์ | Spring Securityย ํํฐ ์ฒด์ธ ๋ด๋ถ |
์ฃผ์ ๋ชฉ์ | ํน์ ์์ฒญ์ SecurityFilterChain ย ์์ย ์์ ํ ๋ฌด์ | ์ธ์ฆ/์ธ๊ฐ ๊ท์น ์ ์ |
์ต์ข ๊ฒฐ๊ณผ๋ฌผ | FilterChainProxy | SecurityFilterChain ย |
์ค์ ๋ฐฉ๋ฒ | WebSecurityCustomizer ย ๋น ๋ฑ๋ก | ๋น์ผ๋ก ย SecurityFilterChain ์ ๋ฆฌํดํ๋ ๋ฉ์๋ ์ ์ |
๐ ์ฐธ๊ณ
https://soojae.tistory.com/52