์ ์ํ๋ฆฌํฐ ์ธ๊ฐ?
์คํ๋ง ์ํ๋ฆฌํฐ๋ ์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณด์์ ๋ด๋นํ๋ ํ๋ ์ ์ํฌ์
๋๋ค. ์ธ์ฆ ๊ณผ ๊ถํ ์ ๋ํ ๋ถ๋ถ์ Filter ์ ํ๋ฆ์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๋ฉฐ, ๋ณด์๊ณผ ๊ด๋ จํด์ ์ฒด๊ณ์ ์ผ๋ก ๋ง์ ์ต์
์ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
Authentication ๊ณผ Authorization
โข
์ธ์ฆ(Authentication)
ํด๋น ์ฌ์ฉ์๊ฐ ๋ณธ์ธ์ด ๋ง๋์ง ํ์ธํ๋ ์ ์ฐจ
โข
์ธ๊ฐ(Authorization)
โฆ
์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ๋ฆฌ์์ค์ ์ ๊ทผ ๊ฐ๋ฅํ์ง ๊ฒฐ์ ํ๋ ์ ์ฐจ
โข
๋๋ฌธ์ ์ํ๋ฆฌํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ฑฐ์น ํ์ ์ธ๊ฐ ์ ์ฐจ๋ฅผ ์งํํ๊ฒ ๋ฉ๋๋ค. ์ด๋ Principal ๊ณผ Credential ์ ์ฌ์ฉํ๋ Credential ๊ธฐ๋ฐ์ ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
โฆ
Principal : ์์ด๋๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ณดํธ ๋ฐ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋์
โฆ
Credential : ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋์์ ๋น๋ฐ๋ฒํธ
ํํฐ
ํํฐ๋ ์ฒด์ธ์ฒ๋ผ ์ฎ์ฌ์๊ธฐ ๋๋ฌธ์ ํํฐ ์ฒด์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ๋ชจ๋ ์์ฒญ์ ์ด ํํฐ์ฒด์ธ์ ๋ฐ๋์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ๋๋ฌธ์ spring MVC ์ ๋ถ๋ฆฌ๋์ด ๊ด๋ฆฌ๋๊ณ , ๋์ํฉ๋๋ค.
์ธ์
๊ณผ ์ฟ ํค
์ํ๋ฆฌํฐ๋ ์ธ์
-์ฟ ํค ๋ฐฉ์์ผ๋ก ์ธ์ฆํฉ๋๋ค. ํ๋ฆ์ ์๋์ ๊ฐ์ต๋๋ค.
โข
์ ์ ์ ๋ก๊ทธ์ธ ์๋ (http request)
โข
AuthenticationFilter ์์ userDB ์ ์ ๊ทผ
โข
UserDetails ๋ฅผ ์ด์ฉํ์ฌ ์ ์ ์ session ์์ฑ (DB ์ ์๋ ์ ์ ์ธ ๊ฒฝ์ฐ)
โข
SecurityContextHolder ์ ์ ์ฅ
โข
์ ์ ์๊ฒ session ID ๋ฅผ ํฌํจํ์ฌ ์๋ต์ฒ๋ฆฌ
โข
์ดํ ์์ฒญ์์๋ ์์ฒญ ์ฟ ํค์์ ์ธ์
๊ฒ์ฆ ํ ์ ํจํ๋ฉด Authentication ์๋ฃ
๋ก๊ทธ์ธ ์ธ์ฆ์ฒ๋ฆฌ ๊ณผ์ Architecture
DaoAuthenticationProvider ์ ๋์๋ฐฉ์
์ฐธ๊ณ ํ ์ฌ์ดํธ