IT๊ธฐ์ดˆ

JWT ํ† ํฐ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ – ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

๐Ÿฅ„ํ…Œํฌ ํ•œ ์Šคํ‘ผ 2026. 5. 31. 15:52

๋ชฉ์ฐจ

  1. ์„ธ์…˜ ๋ฐฉ์‹์˜ ํ•œ๊ณ„
  2. JWT๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  3. JWT์˜ ๊ตฌ์กฐ
  4. JWT ์ธ์ฆ ๋™์ž‘ ๋ฐฉ์‹
  5. ์„ธ์…˜ ๋ฐฉ์‹ vs JWT ๋ฐฉ์‹ ๋น„๊ต
  6. JWT์˜ ์žฅ์ ๊ณผ ๋‹จ์ 
  7. JWT ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ณด์•ˆ ์‚ฌํ•ญ
  8. ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

1. ์„ธ์…˜ ๋ฐฉ์‹์˜ ํ•œ๊ณ„

์•ž์„œ ์„ธ์…˜ ๋ฐฉ์‹์˜ ๋กœ๊ทธ์ธ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ , ์„ธ์…˜ ID๋ฅผ ์ฟ ํ‚ค๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์„ธ์…˜ ๋ฐฉ์‹์€ ์ž˜ ๋™์ž‘ํ•˜์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๋Œ€๋กœ ๋Š˜์–ด๋‚˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ฒ„ A์—์„œ ๋กœ๊ทธ์ธํ•ด์„œ ์„ธ์…˜์ด ์„œ๋ฒ„ A์— ์ €์žฅ๋๋Š”๋ฐ, ๋‹ค์Œ ์š”์ฒญ์ด ์„œ๋ฒ„ B๋กœ ์ „๋‹ฌ๋˜๋ฉด ์„œ๋ฒ„ B์—๋Š” ๊ทธ ์„ธ์…˜ ์ •๋ณด๊ฐ€ ์—†์–ด์„œ ๋กœ๊ทธ์ธ์ด ํ’€๋ฆฌ๋Š” ํ˜„์ƒ์ด ์ƒ๊น๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ๋Œ€ํ˜• ์„œ๋น„์Šค์—์„œ๋Š” ์„œ๋ฒ„๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€ ์šด์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋ฌธ์ œ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด JWT ํ† ํฐ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

2. JWT๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

**JWT(JSON Web Token)**๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ† ํฐ ์ž์ฒด์— ๋‹ด์•„ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์„ธ์…˜ ๋ฐฉ์‹์€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ID๋งŒ ์ฃผ๋Š” ๋ฐฉ์‹์ด๋ผ๋ฉด, JWT๋Š” ์ •๋ณด ์ž์ฒด๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ํ† ํฐ์œผ๋กœ ๋งŒ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ฃผ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์‰ฌ์šด ๋น„์œ ๋กœ ์„ค๋ช…ํ•˜๋ฉด, ์„ธ์…˜์€ ๋ฌผํ’ˆ ๋ณด๊ด€ํ•จ ๋ฒˆํ˜ธํ‘œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฒˆํ˜ธํ‘œ๋งŒ ์žˆ๊ณ  ์‹ค์ œ ๋ฌผ๊ฑด์€ ์„œ๋ฒ„(๋ณด๊ด€ํ•จ)์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด JWT๋Š” ์‹ ๋ถ„์ฆ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹ ๋ถ„์ฆ ์ž์ฒด์— ์ด๋ฆ„, ์ƒ๋…„์›”์ผ, ์‚ฌ์ง„ ๋“ฑ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.

3. JWT์˜ ๊ตฌ์กฐ

JWT๋Š” ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ ๋ถ€๋ถ„์€ ์ (.)์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ JWT ํ† ํฐ์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

์ด ์„ธ ๋ถ€๋ถ„์€ ์ˆœ์„œ๋Œ€๋กœ ํ—ค๋”(Header), ํŽ˜์ด๋กœ๋“œ(Payload), ์„œ๋ช…(Signature)์ž…๋‹ˆ๋‹ค. ๊ฐ ๋ถ€๋ถ„์€ Base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ค๋”(Header) ํ† ํฐ์˜ ํƒ€์ž…(JWT)๊ณผ ์‚ฌ์šฉ๋œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด๋กœ๋“œ(Payload) ์‹ค์ œ ๋‹ด๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ(์‚ฌ์šฉ์ž ID, ๊ถŒํ•œ, ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ๋“ฑ)๋ฅผ ๋‹ด๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋ฅผ **ํด๋ ˆ์ž„(Claim)**์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

{
  "userId": 123,
  "email": "hong@example.com",
  "role": "admin",
  "exp": 1746000000
}

์„œ๋ช…(Signature) ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ํ•ฉ์นœ ๋’ค ์„œ๋ฒ„๋งŒ ์•Œ๊ณ  ์žˆ๋Š” ๋น„๋ฐ€ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋ช… ๋•๋ถ„์— ํ† ํฐ์ด ์œ„์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด๋กœ๋“œ๋Š” Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฒƒ์ด๋ผ ๋ˆ„๊ตฌ๋‚˜ ๋””์ฝ”๋”ฉํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ ˆ๋Œ€ ํŽ˜์ด๋กœ๋“œ์— ๋„ฃ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

4. JWT ์ธ์ฆ ๋™์ž‘ ๋ฐฉ์‹

JWT๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ์ธ ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋กœ ์„œ๋ฒ„๊ฐ€ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ผ์น˜ํ•˜๋ฉด, ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ๋‹ด๊ธด JWT ํ† ํฐ์„ ์ƒ์„ฑํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ๋กœ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ์•ฑ)๋Š” ํ† ํฐ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋‚˜ ์ฟ ํ‚ค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋„ค ๋ฒˆ์งธ๋กœ ์ดํ›„ API ์š”์ฒญ ์‹œ๋งˆ๋‹ค HTTP ํ—ค๋”์— ํ† ํฐ์„ ๋‹ด์•„ ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. Authorization: Bearer ํ† ํฐ๊ฐ’ ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์„ฏ ๋ฒˆ์งธ๋กœ ์„œ๋ฒ„๋Š” ํ† ํฐ์˜ ์„œ๋ช…์„ ๊ฒ€์ฆํ•ด ์œ ํšจํ•œ ํ† ํฐ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•˜๋ฉด ํ† ํฐ ์•ˆ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊บผ๋‚ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ์–ด๋””์—๋„ ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ช… ๊ฒ€์ฆ๋งŒ์œผ๋กœ ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

5. ์„ธ์…˜ ๋ฐฉ์‹ vs JWT ๋ฐฉ์‹ ๋น„๊ต

๊ตฌ๋ถ„์„ธ์…˜ ๋ฐฉ์‹JWT ๋ฐฉ์‹
์ •๋ณด ์ €์žฅ ์œ„์น˜ ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ(ํ† ํฐ ์•ˆ)
์„œ๋ฒ„ ๋ถ€ํ•˜ ์žˆ์Œ (์„ธ์…˜ ์ €์žฅ ํ•„์š”) ์—†์Œ
๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ ๋ณ„๋„ ์ฒ˜๋ฆฌ ํ•„์š” ๊ฐ„ํŽธ
ํ† ํฐ ๊ฐ•์ œ ๋งŒ๋ฃŒ ๊ฐ€๋Šฅ ์–ด๋ ค์›€
๋ณด์•ˆ ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ „ ํ† ํฐ ํƒˆ์ทจ ์‹œ ์œ„ํ—˜
์ฃผ์š” ์‚ฌ์šฉ์ฒ˜ ์ผ๋ฐ˜ ์›น์‚ฌ์ดํŠธ ๋ชจ๋ฐ”์ผ ์•ฑ, SPA, MSA

6. JWT์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

์žฅ์ 

์„œ๋ฒ„์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ์„œ๋ฒ„ ํ™•์žฅ์ด ์ž์œ ๋กญ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์—ฌ๋Ÿฌ ๋Œ€๋ฅผ ์šด์˜ํ•ด๋„ ์–ด๋–ค ์„œ๋ฒ„์—์„œ๋“  ํ† ํฐ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์•ฑ์ด๋‚˜ ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

ํ† ํฐ์ด ํƒˆ์ทจ๋˜๋ฉด ๋งŒ๋ฃŒ ์ „๊นŒ์ง€ ๋ง‰์„ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์„ธ์…˜์ฒ˜๋Ÿผ ์„œ๋ฒ„์—์„œ ์ฆ‰์‹œ ๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŽ˜์ด๋กœ๋“œ์— ๋งŽ์€ ์ •๋ณด๋ฅผ ๋‹ด์„์ˆ˜๋ก ํ† ํฐ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ „์†ก ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

7. JWT ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ๋ณด์•ˆ ์‚ฌํ•ญ

๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์„ค์ • ํ•„์ˆ˜ JWT๋Š” ํ† ํฐ์— ๋งŒ๋ฃŒ ์‹œ๊ฐ„(exp)์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์—†์œผ๋ฉด ํ•œ ๋ฒˆ ๋ฐœ๊ธ‰๋œ ํ† ํฐ์ด ์˜์›ํžˆ ์œ ํšจํ•ด์ ธ ๋ณด์•ˆ ์‚ฌ๊ณ  ์‹œ ๋Œ€์‘์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์•ก์„ธ์Šค ํ† ํฐ์€ 15๋ถ„~1์‹œ๊ฐ„, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์€ 7~30์ผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

HTTPS ์‚ฌ์šฉ ํ•„์ˆ˜ ํ† ํฐ์ด ๋„คํŠธ์›Œํฌ์—์„œ ํƒˆ์ทจ๋˜์ง€ ์•Š๋„๋ก ๋ฐ˜๋“œ์‹œ HTTPS๋กœ ํ†ต์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฏผ๊ฐํ•œ ์ •๋ณด ํŽ˜์ด๋กœ๋“œ์— ๋„ฃ์ง€ ์•Š๊ธฐ ํŽ˜์ด๋กœ๋“œ๋Š” ๋ˆ„๊ตฌ๋‚˜ ๋””์ฝ”๋”ฉํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋ฐ€๋ฒˆํ˜ธ, ์นด๋“œ ๋ฒˆํ˜ธ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์ ˆ๋Œ€ ๋‹ด์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

8. ์ •๋ฆฌ ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„

์˜ค๋Š˜ ๋ฐฐ์šด ํ•ต์‹ฌ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • JWT๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ† ํฐ ์ž์ฒด์— ๋‹ด์•„ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๋Š” ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ํ—ค๋”, ํŽ˜์ด๋กœ๋“œ, ์„œ๋ช… ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์„œ๋ช…์œผ๋กœ ์œ„์กฐ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ๋‹ค์ค‘ ์„œ๋ฒ„ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด๋กœ๋“œ๋Š” ๋””์ฝ”๋”ฉ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋‹ด์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋“œ์‹œ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๊ณ  HTTPS์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” CORS๋ž€ ๋ฌด์—‡์ธ์ง€, ๋ธŒ๋ผ์šฐ์ €์—์„œ API ์š”์ฒญ์ด ๋ง‰ํžˆ๋Š” ์ด์œ ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.