Skip to content

JWT

Posted on:2024๋…„ 2์›” 3์ผ at ์˜คํ›„ 02:25

TOC

JWT

๐Ÿ“ŒJWT๋ž€ ๋ฌด์—‡์ธ๊ฐ€

๐Ÿ“ŒJWT ๊ตฌ์กฐ

https://jwt.io/์— ๊ฐ€๋ฉด jwt ํ† ํฐ์„ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
JWT๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด xxxx.yyyy.zzzz ์„ธ ๊ตฌ์กฐ๋กœ ๋‚˜๋‰œ๋‹ค.
image

image

payload

image

signature

image

๐Ÿ“Œ์ •๋ฆฌ

  1. header์—๋Š” ์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  2. payload์—๋Š” ์‹ค์ œ ์ „๋‹ฌํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  3. signature์—์„œ ์œ„์˜ ์ •๋ณด๋“ค์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด header์™€ payload๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์„ฑํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.

๐Ÿ“ŒJWT ๋™์ž‘ ๋ฐฉ์‹

  1. ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ๋“ฑ์„ ํ•  ๋•Œ OpenID Connect ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋ฉด โ€˜/oauth/authorizeโ€™์™€ ๊ฐ™์€ ์—”๋“œํฌ์ธํŠธ๋กœ ์š”์ฒญํ•˜๋ฉฐ ์ด ๊ณผ์ •์—์„œ authorization code flow ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค | authorization code flow : oauth2.0 ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธ์ฆ ๋ฐฉ์‹์ด๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ธ์ฆํ•˜๋ฉด ์„œ๋ฒ„ ์ชฝ์—์„œ JWT ํ˜•ํƒœ์˜ access token์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•ด์ค€๋‹ค.
  3. ๊ทธ ํ›„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญํ•  ๋•Œ ๋งˆ๋‹ค ํ•ด๋‹น access token(JWT)๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์ฃผ๊ฒŒ ๋˜๊ณ , ์„œ๋ฒ„ ์ชฝ์—์„œ ํ•ด๋‹น JWT๊ฐ€ ์œ ํšจํ•œ ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ์š”์ฒญ ์œ ํ˜•(API ํ˜ธ์ถœ ๋“ฑ)์— ๋”ฐ๋ฅธ ๊ถŒํ•œ ํ™•์ธ ๋ฐ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ“Œ์™œ JWT์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€

  1. JSON์€ XML๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜์—ฌ ์ธ์ฝ”๋”ฉ๋  ๋•Œ ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘์•„, JWT๋Š” SAML๋ณด๋‹ค ๋” ์ปดํŒฉํŠธํ•˜๋‹ค. ์ด๋กœ ์ธํ•ด JWT๋Š” HTML๊ณผ HTTP ํ™˜๊ฒฝ์—์„œ ์ „๋‹ฌํ•˜๊ธฐ์— ์ข‹๋‹ค.
  2. ๋ณด์•ˆ ์ธก๋ฉด์—์„œ SWT๋Š” HMAC ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์œ  ๋น„๋ฐ€๋กœ๋งŒ ๋Œ€์นญ์ ์œผ๋กœ ์„œ๋ช…๋  ์ˆ˜ ์žˆ์ง€๋งŒ, JWT์™€ SAML ํ† ํฐ์€ X.509 ์ธ์ฆ์„œ ํ˜•ํƒœ์˜ ๊ณต๊ฐœ/๋น„๊ณต๊ฐœ ํ‚ค ์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ JSON ํŒŒ์„œ๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๊ฒƒ๋“ค์€ ์ง์ ‘ ๊ฐ์ฒด๋กœ ๋งคํ•‘ ๋œ๋‹ค.๋ฐ˜๋ฉด XML์€ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฌธ์„œ-๊ฐ์ฒด ๋งคํ•‘์ด ์—†์–ด JWT๋ฅผ ๋‹ค๋ฃจ๊ธฐ๊ฐ€ ๋” ์‰ฝ๋‹ค.
  4. JWT๋Š” ์ธํ„ฐ๋„ท ๊ทœ๋ชจ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ(ํŠนํžˆ ๋ชจ๋ฐ”์ผ)์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก JSON ์›น ํ† ํฐ ์ฒ˜๋ฆฌ์˜ ์šฉ์ด์„ฑ์„ ๊ฐ•์กฐํ•œ๋‹ค.
  5. ์ธ์ฝ”๋”ฉ๋œ JWT์™€ SAML์˜ ๊ธธ์ด๋ฅผ ๋น„๊ตํ•˜๋ฉด, JWT๊ฐ€ ๋” ์งง๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๋‹ค.

์ฐธ๊ณ  : https://jwt.io/introduction