1. DelegatingFilterProxy
์ฌ์ฉ์์ ์์ฒญ์ ์ฒ์์ผ๋ก ๋ฐ๋๋ค.
- ์คํ๋ง ์ปจํ ์ด๋์์ FilterChain์ ๋น์ผ๋ก ๋ฑ๋กํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก, DelegatingFilterProxy๊ฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ํํฐ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์คํ๋ง ๋น์ผ๋ก ์์ํ๋ค
2. FilterChainProxy
๋ณด์์ ์ํ ์ฌ๋ฌ ํํฐ๋ฅผ ๊ด๋ฆฌํ๋ ํํฐ ์ฒด์ธ. ํด๋น ํํฐ ์ฒด์ธ์์ ํ์ํ ์ฌ๋ฌ๊ฐ์ง ํํฐ๋ฅผ ํธ์ถํด ์ธ์ฆ ์์ ์ ์ํํ๊ธฐ ์ํ ์ค๋น๋ฅผ ํ๋ค
- ์ธ์ฆ ์์ญ
3. AuthenticationFilter
- Authentication ๊ฐ์ฒด ์์ฑ : ์ธ์ฆ์ ์ํ ์ ๋ณด(ex ์์ด๋, ํจ์ค์๋)๋ฅผ ์ ์ฅํ ์ ์๋ ๊ฐ์ฒด
4.AuthenticationManager : ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๋ด๋ถ ์ธ์ฆ๋ก์ง ์ํ์ผ๋ก ์ด์ด์ง๋ ์ธํฐํ์ด์ค
-> ๋ด๋ถ ์ธ์ฆ๋ก์ง์ AuthentucationProvider๊ฐ ์ํํ๋ค
5. AuthentucationProvider : Manager์ ์ํด ๋ด๋ถ ์ธ์ฆ์ ์์๋ฐ์ ์ธํฐํ์ด์ค๋ก, ์ฌ๊ธฐ์์ ์ฌ๋ฌ ์ธ์ฆ์ ์งํํ๋ค.
(๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ ๋ฑ : userDetailsService, ํด๋น ์๋น์ค๋ UserDetails ๊ฐ์ฒด๋ฅผ ๋ฐํ)
- UserDetails : ์ธ์ฆ์ ํ์ํ ์ฌ์ฉ์ ์ ๋ณด๊ฐ ๋ด๊ธด ๊ฐ์ฒด
- Authentication : ์ธ์ฆ์ ์ํ ๊ฐ์ฒด ๋ฐ ์ธ์ฆ์ด ์๋ฃ๋ ํ ์๊ฒฉ ์ฆ๋ช ๋ฑ์ด ์ถ๊ฐ๋ก ํฌํจ๋ ๊ฐ์ฒด๋ฅผ ํต์นญ
- ์ธ๊ฐ ์์ญ
์ธ์ฆ์ด ์๋ฃ๋ ์ฌ์ฉ์๊ฐ ์ธ๊ฐ๊ฐ ํ์ํ ํน์ ์์ญ์ ์ ๊ทผ ์ฌ์ํ ์ ์ฐจ
6. FilterSecurityInterceptor : ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ํด๋น URL์ ๊ถํ์ด ์๋์ง ๊ฒ์ฆ
7. AccessDecisionManager : ์ธ๊ฐ ์์ ์ ์์๋ฐ์ ์ธํฐํ์ด์ค, ์ฌ๋ฌ ๊ฐ์ AccessDecisionVoter์ ํจ๊ป, AccessDecisionVoter์ ํฌํ๋ฅผ ํตํด ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๋ค์๊ณผ ๊ฐ์ ํฌํ ์ ๋ต์ ๋ฐ๋ผ ์ธ๊ฐ ์ฌ๋ถ๋ฅผ ๋ฐํํ๋ค
- AffirmativeBased: ํ๋๋ผ๋ ACCESS_GRANTED๋ฅผ ๋ฐํํ๋ฉด ์ ๊ทผ์ ํ์ฉ.
- ConsensusBased: ๋ค์์ ACCESS_GRANTED๊ฐ ๋์ค๋ฉด ์ ๊ทผ์ ํ์ฉ.
- UnanimousBased: ๋ชจ๋ ํฌํ์๊ฐ ACCESS_GRANTED๋ฅผ ๋ฐํํด์ผ ์ ๊ทผ์ ํ์ฉ
8. AccessDecisionVoter : ํฌํ ์ํ ๋ฐ ํด๋น ์ธํฐํ์ด์ค์ ์ด๋ค ๊ถํ์ ๊ฒ์ฆ(ํฌํ)ํ ์ ์๋ ์ง ํ์ธํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค
- ์์ธ ๋ฐ์์
AuthenticationEntryPoint๋ฅผ ํตํด 401 ๋๋ 403 ์๋ฌ๋ฅผ ๋ฐํํ๋ค
401 : ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์
403 : ์ธ๊ฐ๋์ง ์์ ์ฌ์ฉ์