1) ์ฟ ํค ์ธ์ฆ ๋ฐฉ์
๋ธ๋ผ์ฐ์ ์ ์ฟ ํค๋ฅผ ์ ์ฅํ๊ณ , ์์ฒญ๋ง๋ค ๊ทธ ์ฟ ํค๋ฅผ ์๋ฒ๋ก ์๋ ์ ์กํด์ ์ธ์ฆํ๋ ๋ฐฉ์์ ๋๋ค.
1. ๋ก๊ทธ์ธ ์ฑ๊ณต
2. ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ๋ด๋ ค์ค
3. ์ดํ ์์ฒญ๋ง๋ค ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ฟ ํค๋ฅผ ํฌํจ
4. ์๋ฒ๊ฐ ์ฟ ํค ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ์ ์ธ์ฆ
- ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์ ์ก
- HttpOnly, Secure, SameSite๋ก ๋ณด์ ์ ์ด ๊ฐ๋ฅ
- CSRF ๋ฐฉ์ด๊ฐ ํ์
๐ ์ฟ ํค๋ “์ ์ก ์๋จ”์ด์ง ์ธ์ฆ ๋ก์ง ๊ทธ ์์ฒด๋ ์๋
2) ์ธ์ ์ธ์ฆ ๋ฐฉ์
์ฌ์ฉ์ ์ธ์ฆ ์ํ๋ฅผ ์๋ฒ๊ฐ ์ธ์ ์ผ๋ก ์ ์ฅํ๊ณ ํด๋ผ์ด์ธํธ๋ ์ธ์ ID๋ง ์ฟ ํค๋ก ๋ค๊ณ ์๋ ๋ฐฉ์์ ๋๋ค.
1. ๋ก๊ทธ์ธ ์ฑ๊ณต
2. ์๋ฒ๊ฐ ์ธ์
์์ฑ
3. ์ธ์
ID๋ฅผ ์ฟ ํค๋ก ๋ด๋ ค์ค
4. ์์ฒญ ์ ์ฟ ํค์ ์ธ์
ID๋ก ์๋ฒ๊ฐ ์ฌ์ฉ์ ์กฐํ
- ์ธ์ฆ ์ ๋ณด๋ ์๋ฒ์๋ง ์กด์ฌ
- ๋ณด์์ ์ ๋ฆฌ
- ์๋ฒ ์์ ์ฌ์ฉ / ํ์ฅ ์ ์ธ์ ๊ณต์ ํ์
๐ “์ฟ ํค + ์ธ์ ”์ด ์ ํต์ ์ธ ์ธ์ฆ ๋ฐฉ์
3) JWT ์ธ์ฆ ๋ฐฉ์
์ฌ์ฉ์ ์ ๋ณด์ ๋ง๋ฃ ์๊ฐ ๋ฑ์ ์๋ช ๋ ํ ํฐ ํํ๋ก ๋ด์ ์ธ์ฆ ํ ํฐ์ ๋๋ค.
1. ๋ก๊ทธ์ธ ์ฑ๊ณต → ์๋ฒ๊ฐ JWT ๋ฐ๊ธ
2. ํด๋ผ์ด์ธํธ๊ฐ JWT ์ ์ฅ
3. ์์ฒญ ์ JWT๋ฅผ ์ ์ก
4. ์๋ฒ๋ ํ ํฐ ์๋ช
/๋ง๋ฃ๋ง ๊ฒ์ฆ (์ธ์
์กฐํ ์์)
- ๋ฌด์ํ(stateless) → ์๋ฒ ํ์ฅ์ ์ ๋ฆฌ
- ํ ํฐ ํ์ทจ ์ ์ฆ์ ์ํ
- ํ ํฐ ์ ์ฅ ์์น๊ฐ ๋งค์ฐ ์ค์
๐ JWT๋ ๋ณดํต Authorization ํค๋ + Bearer ํ ํฐ์ผ๋ก ์ ์ก
4) Access Token / Refresh Token
1. ๋ก๊ทธ์ธ ์ฑ๊ณต
→ Access Token + Refresh Token ๋ฐ๊ธ
2. ํด๋ผ์ด์ธํธ๊ฐ Access Token์ผ๋ก API ์์ฒญ
3. Access Token ๋ง๋ฃ
→ API 401 ์๋ต
4. Refresh Token์ผ๋ก /refresh ์์ฒญ
→ ์๋ก์ด Access Token ๋ฐ๊ธ
5. ๊ธฐ์กด ์์ฒญ ์ฌ์๋
1๏ธโฃ Access Token - ์ฌ์ฉ์๊ฐ ์ธ์ฆ๋์์์ ์ฆ๋ช ํ๊ณ , API ์์ฒญ ์ ๊ถํ์ ํ์ธํ๋ ํ ํฐ
ํน์ง
- ์ ํจ ๊ธฐ๊ฐ์ด ์งง์ (๋ณดํต ์ ๋ถ ~ 1์๊ฐ)
- ๋งค API ์์ฒญ๋ง๋ค Authorization: Bearer <token> ํํ๋ก ์ ๋ฌ
- ํ์ทจ๋๋ฉด ์ํ → ์งง์ ์๋ช ์ผ๋ก ํผํด ์ต์ํ
์ญํ
- “์ด ์์ฒญ์ ๋ก๊ทธ์ธํ ์ฌ์ฉ์ ์์ฒญ์ด ๋ง๋ค”๋ฅผ ์ฆ๋ช
- ์๋ฒ๋ ํ ํฐ๋ง ๋ณด๊ณ ๊ถํ ํ๋จ (์ธ์ ์กฐํ ๋ถํ์)
2๏ธโฃ Refresh Token - ๋ง๋ฃ๋ Access Token์ ๋ค์ ๋ฐ๊ธ๋ฐ๊ธฐ ์ํ ํ ํฐ
ํน์ง
- ์ ํจ ๊ธฐ๊ฐ์ด ๊น (๋ณดํต ๋ฉฐ์น ~ ๋ช ์ฃผ)
- API ์์ฒญ์๋ ์ฌ์ฉ โ
- ๋ณดํต ์๋ฒ์ ์ ์ฅ (DB/Redis ๋ฑ)
์ญํ
- Access Token์ด ๋ง๋ฃ๋๋ฉด Refresh Token์ผ๋ก ์ Access Token ๋ฐ๊ธ
3๏ธโฃ ์ ๋ ๊ฐ๋ฅผ ๋๋ ์ฐ๋?
โ Access Token๋ง ์ฐ๋ฉด
- ์ ํจ ๊ธฐ๊ฐ์ ๊ธธ๊ฒ ์ก์์ผ ํจ
- ํ์ทจ ์ ์ฅ์๊ฐ ์ ์ฉ ๊ฐ๋ฅ
โ Refresh Token๋ง ์ฐ๋ฉด
- ๋งค ์์ฒญ๋ง๋ค ์๋ฒ ํ์ธ ํ์
- ์ฑ๋ฅ·ํ์ฅ์ฑ ๋จ์ด์ง
โ ๋์ ๋๋๋ฉด
- Access Token: ๋น ๋ฅธ ์ธ์ฆ + ์งง์ ์๋ช
- Refresh Token: ๋ณด์ ์ ์ง + ์ฌ์ธ์ฆ ์ญํ
'โ๏ธFront-End > ๐JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [JS] Callback, Promise, Async/await (0) | 2026.01.07 |
|---|---|
| [JS] OffscreenCanvas (0) | 2024.12.26 |
| [JS] ResizeObserver (0) | 2024.12.09 |
| [JS] Web Worker (0) | 2024.11.18 |
| [JS] var, let, const (0) | 2024.02.22 |