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