๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ๏ธ Today I Learned(TIL)/์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

[ TIL ] Kotlin ๋ฌธ๋ฒ• ๊ธฐ์ดˆ/์‹ฌํ™”_Day 4

by carrot0911 2025. 1. 24.

์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง 

ํ•„์ˆ˜ ๊ณผ์ œ ํ•ด๊ฒฐ

  • Spring Security
    • ์ธ์ฆ, ๊ถŒํ•œ ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ์›น ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ•„์ˆ˜์ ์ธ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” Spring์˜ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.
    • ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
      • Spring Security๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” Spring์˜ ์ƒํƒœ๊ณ„์—์„œ ๋ณด์•ˆ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ์ผ์ผ์ด ๋ณด์•ˆ ๊ด€๋ จ ๋กœ์ง์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. Spring Security๋Š” Spring์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ™œ์šฉํ•˜๊ธฐ ์ ์ ˆํ•œ ๊ตฌ์กฐ๋กœ, ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ํ™œ์šฉํ•˜๊ธฐ ์ข‹๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ Spring์—์„œ ์ถ”๊ตฌํ•˜๋Š” IoC/DI ํŒจํ„ด๊ณผ ๊ฐ™์€ ํ™•์žฅ ํŒจํ„ด์„ ๊ณ ๋ คํ•˜์—ฌ ์ธ์ฆ/์ธ๊ฐ€ ๋ถ€๋ถ„์„ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์ง€๋งŒ, Spring Security์—์„œ๋Š” ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์ž‘์—… ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, Spring Security๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ง์ ‘ Session์„ ์ฒดํฌํ•˜๊ณ  redirect ๋“ฑ์„ ํ•ด์•ผ ํ•œ๋‹ค.
    • Spring Security ์•„ํ‚คํ…์ฒ˜

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด์™€ ํ•จ๊ป˜ ์ธ์ฆ ์š”์ฒญ์„ ํ•ฉ๋‹ˆ๋‹ค.
  2. AuthenticationFilter๊ฐ€ ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„์„œ UsernamePasswordAuthenticationToken์˜ ์ธ์ฆ์šฉ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. AuthenticationManager์˜ ๊ตฌํ˜„์ฒด์ธ ProviderManager์—๊ฒŒ ์ƒ์„ฑํ•œ UsernamePasswordToken ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  4. AuthenticationManager๋Š” ๋“ฑ๋ก๋œ AuthenticationProvider๋“ค์„ ์กฐํšŒํ•˜์—ฌ ์ธ์ฆ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  5. ์‹ค์ œ DB์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” UserDetailsService์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.
  6. ๋„˜๊ฒจ๋ฐ›์€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ†ตํ•ด DB์—์„œ ์ฐพ์€ ์‚ฌ์šฉ์ž ์ •๋ณด์ธ UserDetails ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  7. AuthenticationProvider๋“ค์€ UserDetails๋ฅผ ๋„˜๊ฒจ๋ฐ›๊ณ  ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  8. ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ถŒํ•œ ๋“ฑ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‹ด์€ Authentication ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  9. ๋‹ค์‹œ ์ตœ์ดˆ์˜ AuthenticationFilter์— Authentication ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  10. Authentication ๊ฐ์ฒด๋ฅผ SecurityContext์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  11. SecurityContextHolder๋Š” ์„ธ์…˜ ์˜์—ญ์— ์žˆ๋Š” SecurityContext์— Authentication ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

์˜ค๋Š˜ ํ•œ์ค„ ์ •๋ฆฌ โœ๏ธ

์˜ค๋Š˜์€ ํ•˜๋ฃจ์ข…์ผ ์ง‘์ค‘์ด ์•ˆ๋˜์„œ ๊ณต๋ถ€๋ฅผ ๊ฑฐ์˜ ์•ˆํ•œ ๋Š๋‚Œ์ด๋‹ค...

 

์ฃผ๋ง ๊ณ„ํš โฐ

  • ๋ถ€์‚ฐ ๊ฐ€์„œ ๋์žฅ๋‚˜๊ฒŒ ๋†€๊ณ  ์˜ค๊ธฐ ๐Ÿ˜†