๐ฉ๐ป๐ป๐/ํธ๋ฌ๋ธ์ํ
[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 ์ํญ์ ๋ช ํํ ๊ตฌ๋ถํ์ฌ ๋๋ฒ๊น ํ ์ ์๊ฒ ๋์๋ค!