Search

๐’๐ฉ๐ซ๐ข๐ง๐  ๐’๐ž๐œ๐ฎ๐ซ๐ข๐ญ๐ฒ

์™œ ์‹œํ๋ฆฌํ‹ฐ ์ธ๊ฐ€?
์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณด์•ˆ์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ธ์ฆ ๊ณผ ๊ถŒํ•œ ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ 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 ์˜ ๋™์ž‘๋ฐฉ์‹
โ€ข
์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ DaoAuthenticationProvider ๋ฅผ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ ํ•œ ์‚ฌ์ดํŠธ