JWT

JWT


์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ 2๊ฐ€์ง€๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ๋œ๋‹ค.

  1. Cookie
    • ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ ์ƒ์˜ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ๋‹จ์ ์œผ๋กœ ๋กœ์ปฌ์ƒ์— ์กด์žฌํ•˜๊ธฐ์— ๋ณด์•ˆ์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. Session
    • ์„ธ์…˜์€ ์ฟ ํ‚ค์˜ ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋ฉฐ ์ฟ ํ‚ค๋ฅผ ๋ณด๋‚ด ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜์—ฌ ์ฟ ํ‚ค์— ๋‹ด์•„ ๋‹ค์‹œ ๋ณด๋‚ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ๋ฆฌ์Šคํฐ์‹œ ๋„˜์–ด์˜จ ์ฟ ํ‚ค์— ์„ธ์…˜์„ ๋‹ด์•„ ์„ธ์…˜์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด 2๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์€ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋ฉฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ํ™•์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๊นŒ๋‹ค๋กœ์šด ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ตœ๊ทผ์—๋Š” ์ด๋Ÿฐํ•œ ๋ฐฉ์‹์„ ๋ณด์™„ํ•œ JWT(JSON Web Token)์˜ ๋ฐฉ์‹์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

JWT๋ž€


  • ํ† ํฐ์€ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์ฃผ์–ด์•ผํ•œ๋‹ค.
  • cors ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ์ž์œ ๋กญ๋‹ค.
  • OAuth (์นด์นด์˜ค , ๋„ค์ด๋ฒ„ , ํŽ˜์ด์Šค๋ถ ๋“ฑ api)
  • JWT์˜ ๋‹จ์ ์€ ์„ธ์…˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํ†ต์ œํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.(์ด๋ฏธ ์ค€ ํ† ํฐ์„ ๋บ์„ ์ˆ˜ ์—†๋‹ค)
    • ํ† ํฐ์„ 2๊ฐœ๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค. (access ํ† ํฐ๊ณผ refresh ํ† ํฐ)
      Access ํ† ํฐ์˜ ์œ ํšจ์‹œ๊ฐ„์„ ์งง๊ฒŒ ๋‘์–ด ํƒˆ์ทจ์‹œ ์‚ฌ์šฉ์— ์ œํ•œ์„ ๋‘”๋‹ค.
      Refresh ํ† ํฐ์„ db์— ์ €์žฅํ•˜์—ฌ access ํ† ํฐ์ด ๋งŒ๋ฃŒ์‹œ refresh ํ† ํฐ์„ ๋น„๊ตํ•˜์—ฌ access ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค.

๊ตฌ์กฐ


  • ๋””์ฝ”๋”ฉ์‹œ 2๊ฐ€์ง€์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋‹ค type=โ€JWTโ€ ์™€ alg
  • alg๋Š” verify signature์˜ ์„œ๋ช…๊ฐ’์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉ๋  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ €์žฅ

    HS256
    HMAC -> ์‹œํฌ๋ฆฟํ‚ค๋ฅผ ํฌํ•จํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹
    SHA256 -> ํ•ด์‰ฌ

payload

  • base64 ๋กœ ๋””์ฝ”๋”ฉ ์‹œ json ํ˜•์‹์˜ ์ •๋ณด๋ฅผ ์ถœ๋ ฅ
  • Clamis ๋Š” payload์— ๋‹ด๊ธด ์ •๋ณด ์‚ฌ์šฉ์ž ์ •๋ณด๋“ฑ ๋ฐ์ด์ปค๋ฅผ Claim์ด๋ผ ํ•œ๋‹ค.

verify signature

  • ํ—ค๋”์™€ , ํŽ˜์ด๋กœ๋“œ , ์„œ๋ฒ„์— ๊ฐ์ถฐ๋†“์€ ๋น„๋ฐ€ ๊ฐ’ ์„ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋„ฃ๊ณ  ๋Œ๋ฆฌ๋ฉด ์„œ๋ช…๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  • HS256 ์•”ํ˜ธํ™”

    HEADER + Payload + secret

Categories:

Updated:

Leave a comment