๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Computer Science/Network

์ธ์ฆ/์ธ๊ฐ€ (Authentication & Authorization)

by hyebin (Helia) 2025. 12. 5.
๋ฐ˜์‘ํ˜•

์›น ์„œ๋น„์Šค์—์„œ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ์šฉ๋œ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ํ•„์š”ํ•œ ๊ฐœ๋…์ด ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)์ž…๋‹ˆ๋‹ค.


1. ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)์˜ ์ฐจ์ด

์ธ์ฆ์€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ์ธํ•  ๋•Œ ID/๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•˜๊ฑฐ๋‚˜ “์ด ์‚ฌ๋žŒ์ด ์‹ค์ œ๋กœ ์ด ๊ณ„์ • ์ฃผ์ธ์ธ๊ฐ€?”๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ธ๊ฐ€๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” ๊ธ€์„ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ด€๋ฆฌ์ž๋งŒ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ธ๊ฐ€์ž…๋‹ˆ๋‹ค.

⇒ ๋กœ๊ทธ์ธ์€ ์ธ์ฆ, ๊ถŒํ•œ ์ฒดํฌ๋Š” ์ธ๊ฐ€


2. Session ๊ธฐ๋ฐ˜ ์ธ์ฆ (์ „ํ†ต์ ์ธ ๋ฐฉ์‹)

์„ธ์…˜ ์ธ์ฆ์€ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

2-1. ๋™์ž‘ ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•œ ๋’ค, ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ (๋˜๋Š” Redis)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  3. ⇒ ์ด๊ฒƒ์ด ์„ธ์…˜(Session)์ž…๋‹ˆ๋‹ค.
  4. ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ธ์…˜ ID๋ฅผ ๋‹ด์€ ์ฟ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  5. ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž๋™์œผ๋กœ ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•ด์„œ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  6. ์„œ๋ฒ„๋Š” ์ฟ ํ‚ค ์•ˆ์˜ ์„ธ์…˜ ID๋ฅผ ํ™•์ธํ•˜์—ฌ ์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

2-2. ์žฅ์ 

  • ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜์—ฌ ๊ตฌํ˜„์ด ์‰ฝ์Šต๋‹ˆ๋‹ค.

2-3. ๋‹จ์ 

  • ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ์„ธ์…˜ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (→ ๋ณดํ†ต Redis๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐ)
  • ๋ชจ๋ฐ”์ผ/๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์—์„œ ์“ฐ๊ธฐ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค.
    • ⇒ ์„ธ์…˜์€ ์ฟ ํ‚ค ๊ธฐ๋ฐ˜์ด๊ณ , ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ € ์ „์šฉ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ

3. Token ๊ธฐ๋ฐ˜ ์ธ์ฆ (Session์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹)

์„ธ์…˜๊ธฐ๋ฐ˜ ์ธ์ฆ์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ํ† ํฐ(Token)์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ ์ธ์ฆ์— ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

3-1. ๋™์ž‘ ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•œ ๋’ค, ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์ด ํ† ํฐ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  4. ์‚ฌ์šฉ์ž๋Š” ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ํ† ํฐ์„ Authorization ํ—ค๋”์— ๋‹ด์•„์„œ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  5. ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ํ•ด์„ํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์—ฌ ์ธ์ฆ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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. ํ๋ฆ„

  1. Access Token ๋งŒ๋ฃŒ → ํด๋ผ์ด์–ธํŠธ๊ฐ€ Refresh Token์„ ์‚ฌ์šฉํ•ด ์žฌ๋ฐœ๊ธ‰ ์š”์ฒญ
  2. ์„œ๋ฒ„๋Š” Refresh Token์„ ํ™•์ธํ•˜๊ณ  Access Token์„ ์ƒˆ๋กœ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  3. Refresh Token๋„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

6. OAuth 2.0 (์†Œ์…œ ๋กœ๊ทธ์ธ ๋“ฑ ์™ธ๋ถ€ ์ธ์ฆ ๋ฐฉ์‹)

OAuth 2.0์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ์„œ๋น„์Šค(Google, Kakao, Apple ๋“ฑ)์˜ ์ธ์ฆ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

6-1. ์™œ OAuth๊ฐ€ ํ•„์š”ํ• ๊นŒ?

  • ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ 3์ž ์„œ๋น„์Šค์—๊ฒŒ ์ฃผ์ง€ ์•Š๋„๋ก ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.
  • ์ธ์ฆ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ์™ธ๋ถ€ ์ œ๊ณต์ž์˜ ์‹ ๋ขฐ๋œ ์ธ์ฆ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6-2. OAuth 2.0 Authorization Code Flow (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹)

๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์šฐ๋ฆฌ ์„œ๋น„์Šค์—์„œ “๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ” ๋ฒ„ํŠผ ํด๋ฆญ → ์šฐ๋ฆฌ ์„œ๋น„์Šค๋Š” ๊ตฌ๊ธ€ ์ธ์ฆ ์„œ๋ฒ„๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๋Š” ๊ตฌ๊ธ€์—์„œ ๋กœ๊ทธ์ธ ์Šน์ธ → ๊ตฌ๊ธ€์ด “Authorization Code”๋ฅผ ์šฐ๋ฆฌ ์„œ๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์šฐ๋ฆฌ ์„œ๋ฒ„๋Š” ์ด ์ฝ”๋“œ๋ฅผ ๊ตฌ๊ธ€์—๊ฒŒ ๋ณด๋‚ด๊ณ  Access Token์„ ์š”์ฒญ → ๊ตฌ๊ธ€์ด Access Token์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ์šฐ๋ฆฌ ์„œ๋ฒ„๋Š” Access Token์„ ์ด์šฉํ•ด → ๊ตฌ๊ธ€ ์‚ฌ์šฉ์ž ์ •๋ณด API”์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  5. ์šฐ๋ฆฌ ์„œ๋น„์Šค๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํšŒ์›๊ฐ€์ž… ๋˜๋Š” ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•

'๐Ÿ“š Computer Science > Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์›น ๋ณด์•ˆ๊ณผ ํ†ต์‹  ๊ตฌ์กฐ  (0) 2025.12.12
HTTP์™€ ์›น ํ†ต์‹  ๊ธฐ์ดˆ  (0) 2025.11.26