๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป๐Ÿ“/ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[250121] 403 FORBIDDEN ์—๋Ÿฌ ๋ฐœ์ƒ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๊ณผ์ •

_silver 2025. 1. 21. 22:20

 

1. ๋ฌธ์ œ ์ƒํ™ฉ
  • ๋ฌธ์ œ ์ƒํ™ฉ 403 ์—๋Ÿฌ๋Š” ๊ถŒํ•œ ๋ถ€์กฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒํƒœ ์ฝ”๋“œ์ด์ง€๋งŒ, ์ธ์ฆ ์‹คํŒจ(401 Unauthorized) ์ƒํ™ฉ์—์„œ๋„ 403์ด ๋ฐ˜ํ™˜๋˜์–ด ์ธ์ฆ ์‹คํŒจ์™€ ๊ถŒํ•œ ๋ถ€์กฑ ์ƒํ™ฉ์ด ๊ตฌ๋ถ„๋˜์ง€ ์•Š์•„ ๋””๋ฒ„๊น… ๊ณผ์ •์—์„œ ์›์ธ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ API ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ง€์†์ ์œผ๋กœ 403 Forbidden ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

2. ์›์ธ ๋ถ„์„
  • ๋ฌธ์ œ์˜ ์›์ธ์€ Spring Security์™€ JwtAuthFilter ํด๋ž˜์Šค ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ ์ค‘ ์ฒ˜๋ฆฌ ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๊ฐ€ ์žˆ์–ด ๋ฐœ์ƒํ–ˆ๋‹ค.

1. JwtAuthFilter์—์„œ ๋ฐœ์ƒํ•œ ์ธ์ฆ ์‹คํŒจ ์˜ˆ์™ธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Œ.

  • ํ† ํฐ์ด ์œ ํšจํ•˜๊ฑฐ๋‚˜ ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ, JwtAuthFilter์—์„œ CustomException์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ, ์ด ์˜ˆ์™ธ๋ฅผ ํ•„ํ„ฐ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•˜๋‹ค.
  • ์ฒ˜๋ฆฌ ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๊ฐ€ Spring Security์˜ ๊ธฐ๋ณธ ํ๋ฆ„์œผ๋กœ ์ „๋‹ฌ๋˜์—ˆ๊ณ , Spring Security๋Š” ์ด๋ฅผ 403 Forbidden์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ๋ฐ˜ํ™˜๋˜์—ˆ๋‹ค.

2. Spring Security์˜ ๊ธฐ๋ณธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ.

  • Spring์—์„œ๋Š” ๋”ฐ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ 500 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ,
  • Spring Security์—์„œ๋Š” 403 Forbidden์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— JWT ๊ฒ€์ฆ ์‹คํŒจ์™€ ๊ฐ™์€ ์ธ์ฆ ์‹คํŒจ ์ƒํ™ฉ์—์„œ๋„ ๋™์ผํ•œ 403 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด ๋ฌธ์ œ ์›์ธ์„ ํ˜ผ๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

 


3. ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
  • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ธ์ฆ ์‹คํŒจ์˜ ๊ฒฝ์šฐ(401 Unauthorized), ๊ถŒํ•œ ๋ถ€์กฑ์˜ ๊ฒฝ์šฐ(403 Forbidden)์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

1. JwtAuthFilter์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ง„ํ–‰

  • JwtAuthFilter ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธ์ฆ ์‹คํŒจ ์˜ˆ์™ธ(CustomException)๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ, ์ธ์ฆ ์‹คํŒจ ์‹œ 401 Unauthorized ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

 

2. SecurityConfig ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์„ค์ •

  • SecurityConfig์—์„œ ์ „์—ญ์ ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ, ์ธ์ฆ ์‹คํŒจ(401)์™€ ๊ถŒํ•œ ๋ถ€์กฑ(403)์„ ๊ตฌ๋ถ„ํ–ˆ๋‹ค.


4. ๊ฒฐ๊ณผ

 

์ˆ˜์ • ์ž‘์—… ํ›„, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

1. JWT ๊ฒ€์ฆ ์‹คํŒจ : JWT๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ, 401 Unauthorized ์‘๋‹ต ๋ฐ˜ํ™˜

 

2. ๊ถŒํ•œ ๋ถ€์กฑ : ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ถŒํ•œ์ด ์—†๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ, 403 Forbidden ์‘๋‹ต ๋ฐ˜ํ™˜

 

 

๊ฒฐ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์ œ ์ƒํ™ฉ์— ๋”ฐ๋ฅธ ์ ์ ˆํ•œ ์ƒํƒœ ์ฝ”๋“œ์™€ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ €ํฌ ํŒ€์€ 401๊ณผ 403 ์ƒํ•ญ์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค!