Cookie, Session, and Token

  • ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„๋Š” browser์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค (์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด!)

  • ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ฟ ํ‚ค๋„ ํ•จ๊ป˜ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค

    • ๋‹จ, ์ฟ ํ‚ค๋Š” ๋„๋ฉ”์ธ๋ณ„๋กœ ์ œํ•œ๋œ๋‹ค (์œ ํŠœ๋ธŒ๊ฐ€ ์ค€ ์ฟ ํ‚ค๋Š” ์œ ํŠœ๋ธŒ์—๋งŒ ๋ณด๋‚ด์ง)

  • ์ฟ ํ‚ค๋Š” ์œ ํšจ ๊ธฐ๊ฐ„์ด ์žˆ๋Š”๋ฐ, ์„œ๋ฒ„๊ฐ€ ์ •ํ•œ ๊ธฐ๊ฐ„์— ๋”ฐ๋ผ ์œ ํšจํ•˜๋‹ค

  • ์ฟ ํ‚ค๋Š” ์ธ์ฆ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค

    • ex) ์–ธ์–ด ์„ค์ •

Session

    • HTTP๋Š” stateless ํ•˜๋‹ค

      • ์„œ๋ฒ„๋กœ ๊ฐ€๋Š” ๋ชจ๋“  ์š”์ฒญ์ด ์ด์ „ ์š”์ฒญ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ๋‹ค๋ค„์ง„๋‹ค

      • ์š”์ฒญ์ด ๋๋‚˜๋ฉด, ์„œ๋ฒ„๋Š” ๋ˆ„๊ฐ€ ์š”์ฒญํ–ˆ๋Š”์ง€๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค

      • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ๋ˆ„๊ตฐ์ง€๋ฅผ ์•Œ๋ ค์ค˜์•ผํ•œ๋‹ค

      • ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ Session์ด๋‹ค

    • Session์˜ ๋™์ž‘ ๋ฐฉ์‹

      • ๋กœ๊ทธ์ธ ์‹œ ์„œ๋ฒ„๋Š” Session DB ์— ํ•ด๋‹น ์œ ์ €๋ฅผ ์ƒ์„ฑํ•œ๋‹ค

        • ํ•ด๋‹น session์—๋Š” ๋ณ„๋„์˜ ID๊ฐ€ ์žˆ๋‹ค

      • ํ•ด๋‹น session ID๋Š” ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๋กœ ๋Œ์•„์˜ค๊ณ , ์ €์žฅ๋œ๋‹ค

      • ์›น์‚ฌ์ดํŠธ์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๋ธŒ๋ผ์šฐ์ €๋Š” session ID๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” cookie๋ฅผ ์„œ๋ฒ„์— ๋ณด๋‚ธ๋‹ค

        • (์ฟ ํ‚ค๋Š” ์ž๋™์œผ๋กœ ๋ณด๋‚ด์ง€๋‹ˆ๊นŒ~)

      • ์„œ๋ฒ„๋Š” ๋“ค์–ด์˜ค๋Š” ์ฟ ํ‚ค๋ฅผ ๋ณด๊ณ , Session ID์™€ ํ•จ๊ป˜ ์˜ค๋Š” ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•œ๋‹ค

      • ์„œ๋ฒ„๋Š” ํ•ด๋‹น session ID๋ฅผ ๊ฐ€์ง€๊ณ  session DB๋ฅผ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ์œ ์ € ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ด๊ฒŒ ๋œ๋‹ค

        • ์ฆ‰, ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค session DB๋ฅผ ์กฐํšŒํ•ด์•ผํ•œ๋‹ค (๋ถ€ํ•˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ)

    • ์›น์‚ฌ์ดํŠธ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜๊ฒŒ ๋˜๋ฉด, ์œ„์˜ ์ „์ฒด ๊ณผ์ •์ด ๋ฐ˜๋ณต๋œ๋‹ค

    • ๊ธฐ์–ตํ•ด์•ผํ•  ๊ฒƒ์€, ์ค‘์š”ํ•œ ์œ ์ € ์ •๋ณด ๋Š” ๋ชจ๋‘ ์„œ๋ฒ„์— ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค

      • ์‚ฌ์šฉ์ž๋Š” session ID๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

    • ์ฟ ํ‚ค๋Š” ๊ทธ์ € session ID๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋งค๊ฐœ์ฒด์ผ ๋ฟ์ด๋‹ค

    • session์„ ์ด์šฉํ•ด iOS, Android ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์—๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

      • ๋ฐ”๋กœ ์ด ๊ฒฝ์šฐ, Token์„ ์‚ฌ์šฉํ•œ๋‹ค!

JWT

  • JWT๋Š” ํ† ํฐ ํ˜•์‹์ด๋‹ค

  • JWT๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด session DB๋ฅผ ๊ฐ€์งˆ ํ•„์š”๊ฐ€ ์—†๊ณ , ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์œ„ํ•ด ๋งŽ์€ ์ผ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค!

  • ๋™์ž‘ ๋ฐฉ์‹

    • ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๋ณด๋‚ด๊ณ  ํ•ด๋‹น ์ •๋ณด๊ฐ€ ์œ ํšจํ•  ๋•Œ, ์„œ๋ฒ„๋Š” DB์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค

    • ๊ทธ ๋Œ€์‹  ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ID๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ Sign ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ์ด์šฉํ•ด์„œ ์‚ฌ์ธํ•œ๋‹ค

    • ๊ทธ๋ฆฌ๊ณ  Signed Info (Token)๋ฅผ string ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๋‚ธ๋‹ค

    • ์‚ฌ์šฉ์ž๊ฐ€ Signed Info ๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์‚ฌ์ธ(ํ† ํฐ) ์ด ์œ ํšจํ•œ์ง€ ์ฒดํฌํ•˜๊ณ , ํ† ํฐ์ด ์œ ํšจํ•˜๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๋กœ ์ธ์ฆํ•œ๋‹ค

  • JWT๋Š” ๋ณดํ†ต session ID๋ณด๋‹ค ํ›จ~์”ฌ ๊ธธ๋‹ค

    • ์™œ๋ƒ๋ฉด cookie๋Š” ๊ณต๊ฐ„ ์ œ์•ฝ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

    • JWT๋Š” ๊ณต๊ฐ„ ์ œ์•ฝ์ด ์—†์–ด์„œ, ์—„์ฒญ ๊ธธ์–ด๋„ ๋œ๋‹ค

Session๊ณผ Token์˜ ์ฐจ์ด์ 

  • Session

    • session์—์„  ์„œ๋ฒ„๊ฐ€ ๊ทธ๋ƒฅ session ID๋งŒ ์ฃผ๋ฉด ๋œ๋‹ค

    • session์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋Š” session DB์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค

    • ์„œ๋ฒ„๋Š” ์š”์ฒญ์ด ์˜ฌ ๋•Œ, session ID๋ฅผ DB์—์„œ ์กฐํšŒํ•˜๋ฉด ๋œ๋‹ค

  • JWT

    • JWT์—์„  ์„œ๋ฒ„๋Š” ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ† ํฐ์— ์ €์žฅํ•œ๋‹ค

    • ํ•ด๋‹น ํ† ํฐ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ค€๋‹ค

    • ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ํ•ด๋‹น ํ† ํฐ์ด ์œ ํšจํ•œ์ง€๋งŒ ๊ฒ€์ฆํ•œ๋‹ค

Session๊ณผ Token์˜ ์žฅ๋‹จ์ 

  • Session

    • ์„œ๋ฒ„๋Š” ๋กœ๊ทธ์ธ ๋œ ์œ ์ €์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค

    • ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค

      • ํŠน์ • ์œ ์ €๋ฅผ ์ซ“์•„๋‚ด๊ณ  ์‹ถ์„ ๋•Œ, session์„ ์‚ญ์ œํ•ด ๋ฒ„๋ฆฌ๋ฉด ๋œ๋‹ค

    • ๋„ทํ”Œ๋ฆญ์Šค๋Š” ๊ณ„์ • ์œ ์ € ๊ฐœ์ˆ˜ ์ œํ•œ (4๋ช… ๋„˜์œผ๋ฉด ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ)์„ session DB๋ฅผ ์ด์šฉํ•ด์„œ ํ•œ๋‹ค

  • JWT

    • JWT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ƒ์„ฑ๋œ token์„ ์ถ”์ ํ•˜์ง€ ์•Š๋Š”๋‹ค

    • ์„œ๋ฒ„๊ฐ€ ์•„๋Š” ๊ฒƒ์€, ํ† ํฐ์ด ์œ ํšจํ•œ๊ฐ€ ์—ฌ๋ถ€์ผ ๋ฟ์ด๋‹ค

    • JWT๋กœ ์ธ์ฆํ•˜๋ฉด session DB๊ฐ€ ํ•„์š” ์—†์ง€๋งŒ, ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜๋Š” ์—†๋‹ค

      • ํ•ด๋‹น ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

Last updated