์คํ๋ง ๊ธฐ๋ฐ์ดํ๋ฆฌ์ผ์ด์
๋ณด์(์ธ์ฆ, ์ธ๊ฐ)์ ๋ด๋นํ๋ ์คํ๋ง ํ์ ํ๋ ์์ํฌ
Java ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ์ฆ๊ณผ ๊ถํ ๋ถ์ฌ๋ฅผ ๋ชจ๋ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋ ํ๋ ์์ํฌ
์ฌ์ฉ์ ์ฆ๋ช
๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ๊ณผ์ .
๊ถํ ๋ถ์ฌ
์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์คํ
์์์ ๋ํ ์ ๊ทผ ์ ๊ถํ์ด ์๋์ง ํ์ธํ๋ ๊ณผ์ .
๋ณด์ ์์คํ
์ด ์๋๋๊ณ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ทผํ๋ ์ ์ (Principal์ด๋ผ๊ณ ํจ)
๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋์์ ๋น๋ฐ๋ฒํธ๋ Credential
์คํ๋ง ์ํ๋ฆฌํฐ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ํด๋น ์์ฒญ์ ์๋ธ๋ฆฟ ํํฐ๋ค๋ก ๊ฐ๋ฐํ ์ํ๋ฆฌํฐ ํํฐ๋ฅผ ๋์์ํด(์ฌ๋ฌ๊ฐ์ง ํํฐ๋ค์ด ์์๋๋ก ๋์)
SecurityContextPersistenceFilter SecurityContextRepository์์ SecurityContext ๊ฐ์ฒด๋ฅผ ๋ก๋ฉํ์ฌ SecurityContextHolder์ ์ ์ฅํ๊ณ , ์์ฒญ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์ ๊ฑฐํ๋ค.
LogoutFilter ์ง์ ํ ๊ฒฝ๋ก์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ก๊ทธ์์ํ๊ณ ์ง์ ํ ํ์ด์ง๋ก ์ด๋ํ๋ฉฐ ์ดํ ํํฐ๋ค์ ์งํํ์ง ์๋๋ค.
UsernamePasswordAuthenticationFilter ๋ก๊ทธ์ธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์์ด๋/๋น๋ฐ๋ฒํธ ๊ธฐ๋ฐ์ ์ธ์ฆ์ ์ํํ์ฌ ์ฑ๊ณตํ๋ฉด ์ง์ ํ ํ์ด์ง๋ก ์ด๋ํ๊ณ ์คํจ ์ ๋ก๊ทธ์ธ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
DefaultLoginPageGeneratingFilter ๋ก๊ทธ์ธ ์์ฒญ์ด ๋ค์ด์ฌ ์ ๋ก๊ทธ์ธ ํ๋ฉด์ ์ถ๋ ฅํ๊ณ ์ดํ ํํฐ๋ฅผ ์งํํ์ง ์๋๋ค.
AnonymousAuthentiactionFilter ์ฌ์ฉ์๊ฐ ์ธ์ฆ์ ๋ฐ์ง ๋ชปํ ์ Authentication ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ SecurityContext์ ์ค์ ํ๋ค.
์์ฑ๋ Authentication์ ์์ด๋๋ "anonymouseUser"์ด๋ฉฐ ๊ถํ์ "ROLE_ANONYMOUS"๋ก ์ธ์ฆ๋์ง ์์ ์ํ ๊ฐ์ ๊ฐ์ง๋ค.
SessionManagementFilter ์ธ์ ํ์์์, ๋์ ์ ๊ทผ ์ ์ด, ์ธ์ ๊ณ ์ ๊ณต๊ฒฉ๋ฑ์ ์ฒ๋ฆฌํ๋ค.
ExceptionTranslationFilter FilterSecurityInterceptor์์ ๋ฐ์ํ ์์ธ๋ฅผ 403 ์ฝ๋๋ก ์๋ตํ๊ฑฐ๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๋ ์์ ์ ์งํํ๋ค.
FilterSecurityInterceptor ํ์ฌ ์ฌ์ฉ์๊ฐ ์ง์ ํ ๊ฒฝ๋ก์ ์ ๊ทผํ ์ ์๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ฉฐ ๊ถํ์ด ์์ผ๋ฉด ๋ณด์ํํฐ๋ฅผ ํต๊ณผ์์ผ ์์์ ์ ๊ทผ์ํค๊ณ ๊ถํ์ด ์์ผ๋ฉด ์์ธ๋ฅผ ๋ฐ์ ์ํจ๋ค.
์ค์ํํฐ

1. ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์์ด๋์ ๋น๋ฐ๋ฒํธ์ ๋ํ ์์ฒญ์ด ๋ค์ด์ด
2. AuthenticationFilter๊ฐ ์์ฒญ ๋ฐ์ UsernamePasswordAuthenticationToken ์์ฑ
3. Authentication Manager๊ฐ Listํํ๋ก ์ง๋ Provider๋ค์ ์ฐจ๋ก๋ก ํ์ธ. ๊ฐ Provider์supports ๋ฉ์๋ ํ์ธ
4. supports ๋ฉ์๋ ํธ์ถํด ์ฒ๋ฆฌ ๊ฐ๋ฅํ AuthenticationProvider ์ ํ.
5. UserDetailsService ๊ตฌํํ ํด๋์ค์์ Spring Security๊ฐ ๊ด๋ฆฌํ๋ ์ฌ์ฉ์ ์ ๋ณด ํํ์ธ UserDetails๋ฅผ ๋ฐํ๊ฐ์ผ๋ก ๊ฐ์ง๋ ์ค๋ฒ๋ผ์ด๋ฉ๋ loadUserByUsername์ ํ์ธ
6. ์ค๋ฒ๋ผ์ด๋ฉ๋ loadUserByUsername ๋ฉ์๋์ ๋ก์ง์ ๋ฐ๋ผ DB์์ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ด UserDetails๋ก ๋ฐํ
7. ์ธ์ฆ์ด ์๋ฃ๋๋ฉด ์ธ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์์ธ SecurityContextHolder๊ฐ SecrityContext์ Authentication ๊ฐ์ฒด ์ ์ฅ. ์ดํ ์ธ์ฆ๋ ์ฌ์ฉ์ ์ ๋ณด ํ์ ์ Securitycontextholder.getcontext().getauthentication()์ผ๋ก ์ธ์ฆ๋ authentication ๊ฐ์ฒด ๊บผ๋

Session