์น ์๋น์ค์์๋ ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถํ๊ณ , ๊ฐ ์ฌ์ฉ์์๊ฒ ํ์ฉ๋ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํ ์ ์๋๋ก ์ ํํด์ผ ํฉ๋๋ค.
์ด๋ ํ์ํ ๊ฐ๋ ์ด ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ(Authorization)์ ๋๋ค.
1. ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ(Authorization)์ ์ฐจ์ด
์ธ์ฆ์ ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ณผ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ก๊ทธ์ธํ ๋ ID/๋น๋ฐ๋ฒํธ๋ฅผ ๊ฒ์ฆํ๊ฑฐ๋ “์ด ์ฌ๋์ด ์ค์ ๋ก ์ด ๊ณ์ ์ฃผ์ธ์ธ๊ฐ?”๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์ธ๊ฐ๋ ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ๋ฌด์๊น์ง ํ ์ ์๋์ง ๊ถํ์ ๋ถ์ฌํ๋ ๊ณผ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ฐ ์ฌ์ฉ์๋ ๊ธ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ๊ณ , ๊ด๋ฆฌ์๋ง ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ ํ ์ ์๊ฒ ํ๋ ๊ฒ์ด ์ธ๊ฐ์ ๋๋ค.
⇒ ๋ก๊ทธ์ธ์ ์ธ์ฆ, ๊ถํ ์ฒดํฌ๋ ์ธ๊ฐ
2. Session ๊ธฐ๋ฐ ์ธ์ฆ (์ ํต์ ์ธ ๋ฐฉ์)
์ธ์ ์ธ์ฆ์ ์๋ฒ๊ฐ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ง์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
2-1. ๋์ ํ๋ฆ
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์กํฉ๋๋ค.
- ์๋ฒ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ ๋ค, ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ (๋๋ Redis)์ ์ ์ฅํฉ๋๋ค.
- ⇒ ์ด๊ฒ์ด ์ธ์ (Session)์ ๋๋ค.
- ์๋ฒ๋ ์ฌ์ฉ์์๊ฒ ์ธ์ ID๋ฅผ ๋ด์ ์ฟ ํค๋ฅผ ๋ฐ๊ธํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ค์ ์์ฒญ์ ๋ณด๋ด๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ์๋์ผ๋ก ์ธ์ ์ฟ ํค๋ฅผ ํฌํจํด์ ๋ณด๋ ๋๋ค.
- ์๋ฒ๋ ์ฟ ํค ์์ ์ธ์ ID๋ฅผ ํ์ธํ์ฌ ์ด ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง๋ฅผ ํ๋จํฉ๋๋ค.
2-2. ์ฅ์
- ์๋ฒ์์ ์ธ์ ์ ์ง์ ๊ด๋ฆฌํ๋ฏ๋ก ์์ ํฉ๋๋ค.
- ๊ตฌ์กฐ๊ฐ ๋จ์ํ์ฌ ๊ตฌํ์ด ์ฝ์ต๋๋ค.
2-3. ๋จ์
- ์๋ฒ๊ฐ ๋ชจ๋ ์ฌ์ฉ์์ ์ธ์ ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
- ์๋ฒ๊ฐ ๋์ด๋๋ฉด ์ธ์ ๋๊ธฐํ๊ฐ ํ์ํฉ๋๋ค (→ ๋ณดํต Redis๋ฅผ ์ฌ์ฉํด ํด๊ฒฐ)
- ๋ชจ๋ฐ์ผ/๋ค๋ฅธ ํด๋ผ์ด์ธํธ์์ ์ฐ๊ธฐ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค.
- ⇒ ์ธ์ ์ ์ฟ ํค ๊ธฐ๋ฐ์ด๊ณ , ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ์ ์ฉ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ
3. Token ๊ธฐ๋ฐ ์ธ์ฆ (Session์ ์ ์ฅํ์ง ์๋ ๋ฐฉ์)
์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ฒ๊ฐ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ง์ ์ ์ฅํ์ง ์๊ณ , ์ฌ์ฉ์์๊ฒ ํ ํฐ(Token)์ ๋ฐ๊ธํ์ฌ ์ธ์ฆ์ ์ฌ์ฉํ๋๋ก ํ๋ ๋ฐฉ์์ ๋๋ค.
3-1. ๋์ ํ๋ฆ
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์กํฉ๋๋ค.
- ์๋ฒ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํ ๋ค, ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ ํ ํฐ์ ์์ฑํฉ๋๋ค.
- ์ด ํ ํฐ์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํฉ๋๋ค.
- ์ฌ์ฉ์๋ ์ดํ ์์ฒญ๋ง๋ค ํ ํฐ์ Authorization ํค๋์ ๋ด์์ ์๋ฒ๋ก ๋ณด๋ ๋๋ค.
- ์๋ฒ๋ ํ ํฐ์ ํด์ํ๊ณ , ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํ์ธํ์ฌ ์ธ์ฆ์ ์งํํฉ๋๋ค.
3-2. ์ฅ์
- ์๋ฒ๊ฐ ์ธ์ ์ ์ ์ฅํ์ง ์์๋ ๋ผ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
- ๋ชจ๋ฐ์ผ/์น/์ธ๋ถ ์๋น์ค์์๋ ์ฝ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ถ์ฐ ์๋ฒ ํ๊ฒฝ์ ์ ํฉํฉ๋๋ค.
3-3. ๋จ์
- ํ ํฐ์ด ๋ ธ์ถ๋๋ฉด ์ํํฉ๋๋ค.
- ํ ํฐ ์์ฒด๋ฅผ ์๋ฒ๊ฐ ๋ฌดํจํ์ํค๊ธฐ ์ด๋ ต์ต๋๋ค. (→ Refresh Token์ผ๋ก ํด๊ฒฐ)
4. JWT(Json Web Token) ๊ตฌ์กฐ
JWT๋ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํ์์ ๋๋ค.
JWT๋ . ์ผ๋ก ๊ตฌ๋ถ๋ 3๊ฐ์ ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
xxxxx.yyyyy.zzzzz
๊ฐ ํํธ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
4-1. Header
- ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋ช ํ๋์ง ์ ๋ณด๊ฐ ๋ด๊ฒจ ์์ต๋๋ค.
{
"alg": "HS256",
"typ": "JWT"
}
4-2. Payload
- ์ฌ์ฉ์ ์ ๋ณด(Claim)๊ฐ ๋ค์ด ์์ต๋๋ค.
- ex) userID, ๊ถํ(role), ๋ง๋ฃ์๊ฐ(exp)
{
"sub": "user123",
"role": "USER",
"exp": 1690000000
}
4-3. Signature
- Header + Payload๋ฅผ ๋น๋ฐํค๋ก ์๋ช ํ ๊ฐ์ ๋๋ค.
- ์๋ฒ๋ ์ด ๋ถ๋ถ์ ์ด์ฉํด ์์กฐ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค.
5. Refresh Token์ด ํ์ํ ์ด์
Acccess Token(JWT)์ ๋ณดํต ์งง์ ๋ง๋ฃ ์๊ฐ์ ๊ฐ์ง๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ์์๋ Access Token์ด ๋ง๋ฃ๋ ๋๋ง๋ค ๋ก๊ทธ์ธ์ ๋ค์ ํด์ผ ํ๋ ๋ถํธํจ์ด ๋ฐ์ํฉ๋๋ค.
๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ์ด Refresh Token์ ๋๋ค.
์ ๋ง๋ฃ์๊ฐ์ ์งง๊ฒ ๋๊น์?
⇒ ํ ํฐ์ด ์ ์ถ๋์์ ๋ ํผํด๋ฅผ ์ต์ํํ๊ธฐ ์ํด์์ ๋๋ค.
5-1. Refresh Token์ด๋?
- Access Token์ด ๋ง๋ฃ๋์์ ๋ ์๋ก์ด Access Token์ ์ฌ๋ฐ๊ธ๋ฐ๊ธฐ ์ํ ์ธ์ฆ ์๋จ์ ๋๋ค.
- Access Token๋ณด๋ค ๋ ๊ธด ์๋ช ์ ๊ฐ์ง Refresh Token์ ํ์ฉํด ์๋ ๋ก๊ทธ์ธ์ฒ๋ผ ์ ์งํ๋ ๊ตฌ์กฐ์ ๋๋ค.
5-2. Refresh Token ํน์ง
- ๋ ๊ธด ์๋ช ์ ๊ฐ์ง๋๋ค. (๋ณดํต ๋ฉฐ์น ~๋ช ์ฃผ)
- ์๋ฒ๊ฐ Refresh Token์ ์ ์ฅํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
- Access Token์ ์ฌ๋ฐ๊ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
5-3. ํ๋ฆ
- Access Token ๋ง๋ฃ → ํด๋ผ์ด์ธํธ๊ฐ Refresh Token์ ์ฌ์ฉํด ์ฌ๋ฐ๊ธ ์์ฒญ
- ์๋ฒ๋ Refresh Token์ ํ์ธํ๊ณ Access Token์ ์๋ก ๋ฐ๊ธํฉ๋๋ค.
- Refresh Token๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค.
6. OAuth 2.0 (์์ ๋ก๊ทธ์ธ ๋ฑ ์ธ๋ถ ์ธ์ฆ ๋ฐฉ์)
OAuth 2.0์ ์ฌ์ฉ์๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ ๊ณตํ์ง ์๊ณ , ๋ค๋ฅธ ์๋น์ค(Google, Kakao, Apple ๋ฑ)์ ์ธ์ฆ์ ์ด์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
6-1. ์ OAuth๊ฐ ํ์ํ ๊น?
- ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ 3์ ์๋น์ค์๊ฒ ์ฃผ์ง ์๋๋ก ๋ง๋ค๊ธฐ ์ํด์์ ๋๋ค.
- ์ธ์ฆ์ ์ง์ ๊ตฌํํ์ง ์์๋ ์ธ๋ถ ์ ๊ณต์์ ์ ๋ขฐ๋ ์ธ์ฆ์ ์ด์ฉํ ์ ์์ต๋๋ค.
6-2. OAuth 2.0 Authorization Code Flow (๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์)
๊ตฌ๊ธ ๋ก๊ทธ์ธ์ ์์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ฐ๋ฆฌ ์๋น์ค์์ “๊ตฌ๊ธ ๋ก๊ทธ์ธ” ๋ฒํผ ํด๋ฆญ → ์ฐ๋ฆฌ ์๋น์ค๋ ๊ตฌ๊ธ ์ธ์ฆ ์๋ฒ๋ก ๋ฆฌ๋ค์ด๋ ํธ ํฉ๋๋ค.
- ์ฌ์ฉ์๋ ๊ตฌ๊ธ์์ ๋ก๊ทธ์ธ ์น์ธ → ๊ตฌ๊ธ์ด “Authorization Code”๋ฅผ ์ฐ๋ฆฌ ์๋ฒ์๊ฒ ์ ๋ฌํฉ๋๋ค.
- ์ฐ๋ฆฌ ์๋ฒ๋ ์ด ์ฝ๋๋ฅผ ๊ตฌ๊ธ์๊ฒ ๋ณด๋ด๊ณ Access Token์ ์์ฒญ → ๊ตฌ๊ธ์ด Access Token์ ๋ฐํํฉ๋๋ค.
- ์ฐ๋ฆฌ ์๋ฒ๋ Access Token์ ์ด์ฉํด → ๊ตฌ๊ธ ์ฌ์ฉ์ ์ ๋ณด API”์ ์ ๊ทผํ์ฌ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ์ฐ๋ฆฌ ์๋น์ค๋ ํด๋น ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์๊ฐ์ ๋๋ ๋ก๊ทธ์ธ ์ฒ๋ฆฌํฉ๋๋ค.
'๐ Computer Science > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์น ๋ณด์๊ณผ ํต์ ๊ตฌ์กฐ (0) | 2025.12.12 |
|---|---|
| HTTP์ ์น ํต์ ๊ธฐ์ด (0) | 2025.11.26 |