Hamutaro - Hamtaro 4

Backend/Spring

[Spring Security] ์ธ์ฆ(Authentication), ์ธ๊ฐ€(Authorization) ๊ฐœ๋…๊ณผ ์ฐจ์ด

carsumin 2026. 2. 10. 22:16
์ธ์ฆ (Authentication)

 

์ •์˜

  • "์ด ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •"
  • ๋กœ๊ทธ์ธ
  • JWT ํ† ํฐ ๊ฒ€์ฆ
  • ์„ธ์…˜ ์ฟ ํ‚ค ๊ฒ€์ฆ
  • API Key ๊ฒ€์ฆ

์ธ์ฆ์˜ ๊ฒฐ๊ณผ

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธ๋˜๋ฉด SecurityContext์— ์‚ฌ์šฉ์ž ์ •๋ณด(Authentication) ์ €์žฅ๋จ
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธ๋˜์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ์€ ์ข…๋ฃŒ๋จ

์ธ์ฆ ์‹คํŒจ ์‹œ

  • HTTP Status : 401 Unauthorized

-> ์ธ์ฆ = ์‹ ์› ํ™•์ธ

 

 

์ธ๊ฐ€ (Authorization)

 

์ •์˜

  • "์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด ํ–‰๋™์„ ํ•  ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ณผ์ •"
  • Role (USER, ADMIN, CREATOR)
  • Authority (WRITE_POST, DELETE_POST)
  • ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž ์—ฌ๋ถ€ (๋‚ด ๊ธ€์ธ์ง€?)
  • ์ƒํƒœ (๊ตฌ๋… ์—ฌ๋ถ€, ๊ฒฐ์ œ ์—ฌ๋ถ€, ์ •์ง€ ์—ฌ๋ถ€)

์ธ๊ฐ€์˜ ๊ฒฐ๊ณผ

  • ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด -> ์š”์ฒญ ๊ณ„์† ์ง„ํ–‰
  • ๊ถŒํ•œ์ด ์—†์œผ๋ฉด -> ์ ‘๊ทผ ์ฐจ๋‹จ

์ธ๊ฐ€ ์‹คํŒจ ์‹œ

  • HTTP Status : 403 Forbidden

-> ์ธ๊ฐ€ = ๊ถŒํ•œ ํŒ๋‹จ

 

 

์ธ์ฆ vs ์ธ๊ฐ€
๊ตฌ๋ถ„ ์ธ์ฆ (Authentication) ์ธ๊ฐ€ (Authorization)
์งˆ๋ฌธ ๋„ˆ ๋ˆ„๊ตฌ๋ƒ ๋„ˆ ์ด๊ฑฐ ํ•ด๋„ ๋˜๋ƒ
๊ธฐ์ค€ ๋กœ๊ทธ์ธ, ํ† ํฐ, ์„ธ์…˜ Role, ๊ถŒํ•œ, ์ƒํƒœ
์‹คํŒจ ์ฝ”๋“œ 401 403
์ฒ˜๋ฆฌ ์œ„์น˜ Security Filter Filter / Method / Service
์„ ํ›„ ๊ด€๊ณ„ ํ•ญ์ƒ ๋จผ์ € ์ธ์ฆ ์ดํ›„

 

 

Spring Security ๋‚ด๋ถ€ ํ๋ฆ„
์š”์ฒญ
 ↓
Security Filter Chain
 ↓
[์ธ์ฆ ํ•„ํ„ฐ]
 - JWT ๊ฒ€์ฆ
 - ์‚ฌ์šฉ์ž ์‹๋ณ„
 - SecurityContext์— ์ €์žฅ
 ↓
[์ธ๊ฐ€ ์ฒ˜๋ฆฌ]
 - URL ์ ‘๊ทผ ๊ถŒํ•œ
 - @PreAuthorize
 - ๊ถŒํ•œ ์ฒดํฌ
 ↓
Controller