JWT๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๊ณ  ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค.
๋ณดํ†ต ์„ธ์…˜์ด๋‚˜ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ ๊ฐ•๋ ฅํ•œ ์ธ์ฆ ์ˆ˜๋‹จ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฟ ํ‚ค๋Š” ๋…ธ์ถœ, ์กฐ์ž‘ ๋“ฑ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ณ  ๋„๋ฉ”์ธ ๋“ฑ์ด ๋‹ฌ๋ผ์งˆ ๊ฒฝ์šฐ ๊ณต์œ ๊ฐ€ ํž˜๋“ค์–ด์ง‘๋‹ˆ๋‹ค.
  • ์„ธ์…˜์€ ์„œ๋ฒ„์— ๋ณ„๋„๋กœ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JWT์˜ ํŠน์ง•

  • JSON ๊ตฌ์กฐ, ์ฆ‰ key-value ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ๊ฐ๊ฐ์˜ ์š”์ฒญ์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋กœ ์ธํ•ด ํ™•์žฅ์„ฑ ๋ฉด์—์„œ ์ด์ ์„ ๊ฐ€์ ธ๊ฐ‘๋‹ˆ๋‹ค.

JWT ํ๋ฆ„๋„

JWT๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ง€๊ธˆ๊นŒ์ง€ ๋ณด์•˜๋˜ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ„๋‹จํ•œ ํ๋ฆ„๋„๋ฅผ ๊ทธ๋ ค ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
(์ฐธ๊ณ ๋งŒ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค)

JWT์˜ ๋‹จ์ 

  • ํ† ํฐ์˜ ๊ธธ์ด๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๊ธธ์–ด, ๋„คํŠธ์›Œํฌ์•  ๋ถ€ํ•˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • JWT์— ๋“ค์–ด๊ฐ€๋Š” ๋‚ด์šฉ ๋ถ€๋ถ„์„ Payload๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์€ ๋ˆ„๊ตฌ๋‚˜ ์—ด๋žŒ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ณ„๋„๋กœ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฏผ๊ฐ ์ •๋ณด๋Š” ๋‹ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„์—์„œ JWT๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ† ํฐ์ด ํƒˆ์ทจ๋˜์—ˆ์„ ๋•Œ ๋Œ€์ฒ˜๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ

  1. Access token์ด ํƒˆ์ทจ๋˜์—ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ, ์œ ํšจ๊ธฐ๊ฐ„์„ ์งง๊ฒŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. Refresh token์ด ํƒˆ์ทจ๋˜์—ˆ์„ ๊ฒฝ์šฐ๋„ ๋Œ€๋น„ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„์— ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๋ฅผ ๋‘์–ด ํ† ํฐ ์‚ฌ์šฉ์„ ๋ง‰์Šต๋‹ˆ๋‹ค. (ํ๋ฆ„๋„์ฒ˜๋Ÿผ)
    • ํ† ํฐ์„ ์žฌ๋ฐœ๊ธ‰ํ•  ๋•Œ Refresh token๋„ ๊ฐ™์ด ๋ฐœ๊ธ‰ํ•˜๊ณ , ์œ ํšจ๊ธฐ๊ฐ„์„ Access token์ฒ˜๋Ÿผ ์งง๊ฒŒ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉ์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ Refresh token rotation์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  3. Supabase ๋“ฑ ์ผ๋ถ€ ์„œ๋น„์Šค์—์„œ๋Š” JWT์— ๊ถŒํ•œ ๋“ฑ์˜ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด๊ฒƒ์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š”๋ฐ, ๋ณดํ†ต์€ ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋งŒ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    (์ €๋Š” ๊ฐ€๊ธ‰์  ์‚ฌ์šฉ์ž ID ์ •๋„๋งŒ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.)

์ฐธ๊ณ  ์ž๋ฃŒ