[ Spring Security Official Docs ] Getting Started
[Spring Blog ] Spring security without the websecurityconfigureradapter
Spring Security 5.7.0-M2 ์์ WebSecurityConfigurerAdapter deprecated ๋จ
๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ ์ ์ฐธ๊ณ ์ฌํญ(๊ฒฝ์ผ๋ ์น๊ตฌ๋ถ )
1. ๋ก๊ทธ์ธ
- Spring Security๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ ์ธ์ฆ/์ธ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
- ์ธ์ฆ (Authentication)
- WAS์ ๋ค์ด์ค๋ ์์ฒญ์ ๊ฒ์ฆํ๊ธฐ ์ํ AuthorizationInterceptor ๊ตฌํํ์ต๋๋ค.
- Http ํค๋์ ๋ค์ด์๋ ์์ธ์ค ํ ํฐ(JWT) ์กด์ฌ ์ฌ๋ถ ํ์ธํฉ๋๋ค.
- ์ฌ๋ฐ๋ฅธ ์์ธ์ค ํ ํฐ์ธ์ง ๊ฒ์ฆํฉ๋๋ค.
- ์ธ๊ฐ (Authorization)
- ์ปจํธ๋กค๋ฌ์ ์ ๊ทผํ๊ธฐ ์ ์ ์์ฒญํ ์ ์ ์ ๊ถํ์ ๊ฒ์ฆํ๊ธฐ ์ํ CurrentUserArgumentResolver ๊ตฌํํ์ต๋๋ค.
- Http ํค๋์ ๋ค์ด์๋ ์์ธ์ค ํ ํฐ์ผ๋ก ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
- ์ ์ ๊ฐ์ฒด๊ฐ ์๋ง์ ๊ถํ์ ๊ฐ๊ณ ์๋์ง ๊ฒ์ฆํฉ๋๋ค.
- OAuth ๋ก๊ทธ์ธ ๊ตฌํ
- ํด๋ผ์ด์ธํธ์์ OAuth ๊ณต๊ธ์์ ์ธ๊ฐ ์ฝ๋(AuthorizationCode)๊ฐ ์์ฒญ์ผ๋ก ์ค๋ฉด ๊ณต๊ธ์์ ์๋ง๋ ์์ ๋ก๊ทธ์ธ ์๋ฒ(Authorization Server)์๊ฒ ์์ธ์ค ํ ํฐ์ ์์ฒญํฉ๋๋ค.
- ์ ๋ฌ ๋ฐ์ ์์ธ์ค ํ ํฐ์ผ๋ก ์์ ๋ก๊ทธ์ธ ์๋ฒ(Resource Server)์๊ฒ ์ ์ ์ ๋ณด๋ฅผ ์์ฒญํฉ๋๋ค.
- ์ ๋ฌ ๋ฐ์ ์ ์ ์ ๋ณด์์ ํ์ํ ์ ๋ณด๋ฅผ Redis์ ์ ์ฅํ ๋ค ์์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ์์ฑํฉ๋๋ค.
- ์์ฑํ ์์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํฉ๋๋ค.
- ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ํ์ฉํ ์๋ ๋ก๊ทธ์ธ ๊ตฌํ
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ๋ฉด ์์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ๋ฐ๊ธํฉ๋๋ค.
- ์์ธ์ค ํ ํฐ์ด ๋ง๋ฃ๋๋ฉด ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ์ฌ์ฉํด ์์ธ์ค ํ ํฐ์ ๋ค์ ๋ฐ๊ธํฉ๋๋ค.
- ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ๋ง๋ฃ๊ธฐ๊ฐ์ด 24์๊ฐ ๋ฏธ๋ง์ผ๋ก ๋จ์์ ๋, ๊ธฐ๊ธฐ ๊ณ ์ ๋ฒํธ๊ฐ ์ผ์นํ ๊ฒฝ์ฐ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ๋ค์ ๋ฐ๊ธํฉ๋๋ค.
- ์์ธ์ค ํ ํฐ, ๋ฆฌํ๋ ์ฌ ํ ํฐ ์ทจ์ฝ์ ๊ฐ์
- ์์ธ์ค ํ ํฐ์ด ํ์ทจ๋ ์ ์๋ ๋ฌธ์
- ์์ธ์ค ํ ํฐ์ ๋ง๋ฃ ์๊ฐ์ 3๋ถ์ผ๋ก ์ค์ ํ์ฌ ๊ฐ์ ํ์ต๋๋ค.
- ๋ฆฌํ๋ ์ฌ ํ ํฐ ํ์ทจ๋ ์ ์๋ ๋ฌธ์
- ๋ก๊ทธ์ธ ์ ๊ธฐ๊ธฐ ๊ณ ์ ๋ฒํธ๋ฅผ ๋ฐ์ Redis์ ์ ์ฅํฉ๋๋ค.
- ๋ฆฌํ๋ ์ฌ ํ ํฐ์ผ๋ก ์๋ก์ด ์์ธ์ค ํ ํฐ์ ๋ฐ๊ธํ ๋ ๊ธฐ๊ธฐ ๊ณ ์ ๋ฒํธ๋ ๋ฐ์ Redis์ ์ ์ฅ๋ ๊ฐ๊ณผ ๋ค๋ฅด๋ฉด ๋ค์ ๋ก๊ทธ์ธํ๋๋ก ํ์ฌ ๊ฐ์ ํ์ต๋๋ค.
์ธ์ฆ
Spring Security Architecture & ConfigureSpring Security ํต์ฌ(ThreadLocal, SecurityContextHolder, Authentication)์ธ์ฆ์ฒ๋ฆฌ (AuthenticationManager, AbstractAuthenticationProcessingFilter)PasswordEncoder๋ก๊ทธ ์์ ํํฐ[DB์์ user์ ๋ณด ๊ด๋ฆฌํ๊ธฐ] UserDetail, UsetDetailsServiceCustom AuthenticationProvider ์ ์ฉSAML ์ธ์ฆ
์ธ๊ฐ
ExceptionTranslationFilterFilterSecurityInterceptor(์ธ๊ฐ ์ฒ๋ฆฌ)Voter
ํํฐ ์ดํด
ChannelProcessingFilter (Spring Security์ HTTPS ์ ์ฉํ๊ธฐ)RequestCacheAwareFilter AnonymousAuthenticationFilterCustom Filter ์ด์ฉ ( addFilterAt )
๋ก๊ทธ์ธ ์ง์ ์ง์ ํํฐ
RemembermeAuthenticationFilter์ธ์ ์ฒ๋ฆฌ(SecurityContextPersistenceFilter, SessionManagementFilter)๊ทธ์ธ ํํฐ
HeaderWriterFilterCsrfFilterBasicAuthenticationFilterWebAsyncManagerIntegrationFilter
ํ์ฉ
Spring Session, Session ClusterMulti Filter Chain ์ด์ฉ (์น, ๋ชจ๋ฐ์ผ ๋์ ๊ฐ๋ฐ)Spring Security ์ธ์ฆ ์ด๋ฒคํธJWT ํ ํฐAPI Key๋ฅผ ์ด์ฉํ REST API ๋ณด์@AuthenticationPrincipalOAuth2์ธ์ฆ/์ธ๊ฐ ์์ธ ์ฒ๋ฆฌ (AuthenticationEntryPoint)