์ธ์ฆ (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'Backend > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SpringBoot] MDC์ TraceId๋ก ์์ฒญ ๋จ์ ๋ก๊ทธ ์ถ์ ํ๊ธฐ (0) | 2026.02.17 |
|---|---|
| [Spring] Bearer ํ ํฐ ์ธ์ฆ ๊ตฌ์กฐ ์ดํดํ๊ธฐ (0) | 2026.02.11 |
| [Spring] @RequiredArgsConstructor์ final ํ๋์ ๊ด๊ณ ์ ๋ฆฌ (0) | 2026.02.10 |
| [Spring] API gateway (2) | 2026.01.26 |
| [Spring] Spring WebFlux ๋ ๋ฌด์์ธ๊ฐ (2) | 2026.01.05 |