
๋ณธ Spring Security ์๋ฆฌ์ฆ ๋ด์ฉ์ ์ธํ๋ฐ ์ ์์๋์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ์๋ฆฌ์ฆ์ ๋๋ค.
์์ ์ ์ด์ฉ ๋ชฉ์ ์ ํฌ์คํ ๋ฌด๋จ ๋ณต์ ๋ฐ ์ฌ์ฉ์ ๊ธํฉ๋๋ค.
๊ฐ์ ์ฃผ์: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-%EC%99%84%EC%A0%84%EC%A0%95%EB%B3%B5#
SecurityBuilder์ SecurityConfigurer ๋ ๋ค ์ธํฐํ์ด์ค๋ค.
SecurityBuilder ๊ฐ SecurityConfigurer๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ณ , ์ธ์ฆ ๋ฐ ์ธ๊ฐ์ ์ด๊ธฐํ ์์
์ SecurityConfigurer์ ์ํด ์งํ๋๋ค.

๋น๋ ํด๋์ค๋ก์ ์น ๋ณด์์ ๊ตฌ์ฑํ๋ ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ญํ ์ ํ๋ค.
๋ํ์ ์ธ ๊ตฌํ์ฒด๋ก WebSecurity, HttpSecurity, AuthenticationManagerBuilder๊ฐ ์๋ค.

Http ์์ฒญ์ ๋ํ ๋ณด์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํ๋๋ค์ ์์ฑํ๊ณ ์ด๊ธฐํ ์ค์ ์ ๊ด์ฌํ๋ค.
SecurityConfigurer ์ธํฐํ์ด์ค๋ init๊ณผ configure ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ๊ฐ ๋ฉ์๋๋ SecurityBuilder ํ์
์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
Spring Security Starter ๋ชจ๋์ ์์กด์ฑ์ ์ถ๊ฐํ๊ณ ์คํํ์ฌ ํ๋ฆ์ ์ดํด๋ณธ๋ค.
HttpSecurityConfiguration ํด๋์ค์ ์๋ httpSecurity ๋ฉ์๋๋ฅผ ํตํด HttpSecurity ๋น์ ์์ฑํ๋ค.

httpSecurity ๋น ์์ฑ ๋ฉ์๋์ @Scope ์ด๋
ธํ
์ด์
์ ์ดํด๋ณด๋ฉด prototype์ผ๋ก ๋ช
์๋์ด ์๋ค.
์ด ๋ฉ์๋๊ฐ ์คํ๋ ๋๋ง๋ค HttpSecurity ๋น์ด ์์ฑ๋๋ค. ์ฆ singleton์ผ๋ก ๊ด๋ฆฌ๋๋ ๋น์ด ์๋๋ค.
httpSecurity ๋ฉ์๋์์ AuthenticationManagerBuilder๋ฅผ ์์ฑํ๊ณ , HttpSecurity๋ ์์ฑํ๋ค.
๊ทธ ๋ฐ์ http(HttpSecurity)๋ฅผ ํตํด์ ๊ธฐ๋ณธ ๋ณด์ ์ค์ ์ด๊ธฐํ ์์ ์ ์งํํ๊ณ ์๋ค.
withDefaults ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด์ csrf ๋ณด์ ์ด๊ธฐํ ์์
์ ์งํํ๋ค.

withDefaults ๋ฉ์๋๋ ํจ์ํ ์ธํฐํ์ด์ค์ธ Customizer์ static ๋ฉ์๋์ด๋ค.
withDefaults ๋ฉ์๋๋ ์ ๋ค๋ฆญ ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ ๋ช
์์ ์ผ๋ก ์ ๋ค๋ฆญ ํ์
์ ์ง์ ํ์ง ์์ผ๋ฉด HttpSecurity์ csrf ๋ฉ์๋ ์ธ์๊ฐ์ ํตํด ์ถ๋ก ํ๋ค.

์ฆ, ์ฌ๊ธฐ์ ์ ๋ค๋ฆญ ํ์
์ csrf ๋ฉ์๋์ ์ธ์๊ฐ์ ์ถ๋ก ํ์ฌ Customizer<CsrfConfigurer<HttpSecurity> ํ์
์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.

CsrfConfigurer ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ getOrApply ๋ฉ์๋๋ฅผ ํตํด ์์ฑํ CsrfConfigurer๋ฅผ ์ ์ฉํ๋ค. CsrfConfigurer๋ SecurityConfigurer๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด๋ค.
์ด๋ฐ์์ผ๋ก ๋๋จธ์ง๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฑํ configurer๋ค์ ๋ค ์ ์ฉํ ํ์ HttpSecurity๋ฅผ ๊ทธ๋๋ก returnํ๋ฉด์ HttpSecurity ๋น์ ๋ฑ๋กํ๋ค.
๊ทธ ์ดํ์ ์ ๋ฒ์ ์ดํด๋ดค๋ SpringBootWebSecurityCongiruation ํด๋์ค์ defaultSecurityFilterChain ๋ฉ์๋๋ก ๋์ด์จ๋ค.

์ฌ๊ธฐ์ HttpSecurity ๋น์ ์ฃผ์
๋ฐ๊ณ , ์ถ๊ฐ์ ์ผ๋ก Configurer๋ค์ ์ ์ฉํ ํ build ๋ฉ์๋๋ฅผ ์คํํ๊ณ return ํ์ฌ SecurityFilterChain ๋น์ ๋ฑ๋กํ๋ค.

HttpSecurity์ build ๋ฉ์๋๋ ์์ ๊ฐ์ด doBuild ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.

doBuild ๋ฉ์๋๋ init๊ณผ configure ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ performBuild ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ return ํ๊ณ ์๋ค.

init๊ณผ configure ๋ฉ์๋์ ๊ตฌํ์ ๋น์ทํ๊ฒ ์๊ฒผ๋ค.
SecurityConfigurer๋ค์ ๊บผ๋ด์ SecurityConfigurer์ init์ ํ ๋ฒ์ฉ ํธ์ถํ๊ณ , configure๋ฅผ ํ ๋ฒ์ฉ ํธ์ถํ์ฌ ๊ฐ SecurityConfigurer์ ํด๋นํ๋ Filter๋ค์ ์์ฑํ๋ค.

performBuild ๋ฉ์๋๋ ์ต์ข
์ ์ผ๋ก DefualtSecurityFilterChain์ ์์ฑํด์ ๋ฐํํ๋ค.

์ด๋ ๊ฒ ์ต์ข
์ ์ผ๋ก SecurityFilterChain์ด ๋น์ผ๋ก ๋ฑ๋ก๋๋ค.