ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋„คํŠธ์›Œํฌ] ์ฟ ํ‚ค(Cookie), ์„ธ์…˜(Session), ํ† ํฐ(Token)
    ๋„คํŠธ์›Œํฌ 2024. 6. 9. 20:31

    ๐Ÿ’ก์ด๊ฑธ ์™œ ์“ธ๊นŒ?

    • http ํŠน์ง•๋•Œ๋ฌธ์ด๋‹ค
    • http๋Š” ์›น์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์ „์†ก์˜ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค
    • ์ด http๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ(connectionless), ๋น„์ƒํƒœ์„ฑ(stateless)๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค
    • ์ด๋Ÿฐ ํŠน์ง•์œผ๋กœ ์„œ๋ฒ„๋Š” ํ™•์žฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค

     

    1. Connectionless ํ”„๋กœํ† ์ฝœ(๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ)
      ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ, ์š”์ฒญ์— ๋งž๋Š” ์‘๋‹ต์„ ๋ณด๋‚ธ ํ›„ ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ฒ˜๋ฆฌ๋ฐฉ์‹์ด๋‹ค.
    2. Stateless ํ”„๋กœํ† ์ฝœ(์ƒํƒœ์ •๋ณด ์œ ์ง€ ์•ˆํ•จ)
      ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ฐ€์ง€์ง€์•Š๋Š” ์„œ๋ฒ„ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์ฒซ๋ฒˆ์žฌ ํ†ต์‹ ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•˜๋‹ค ํ•ด๋„, ๋‘๋ฒ„์žฌ ํ†ต์‹ ์— ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜์ง€์•Š๋Š”๋‹ค.

     

    ๋ฌธ์ œ์ 

     

    ํ•œ ์‚ฌ๋žŒ์ด ์›น์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ๋ณด๋‚ด๋Š” ๋ชจ๋“  ์š”์ฒญ์€ ์—ฐ๊ฒฐ์„ฑ์ด ์—†์–ด์„œ ํ•ญ์ƒ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์ธ์‹ํ•˜๊ฒŒ ๋œ๋‹ค

    ์›น์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ์„œ๋ฒ„์— ๋‹ค๋ฅธ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ์ธ์ง€ ์•„๋‹Œ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค

     

     



    ์ฟ ํ‚ค

    • ์ฟ ํ‚ค๋Š” ์›น์‚ฌ์ดํŠธ์—์„œ ๋กœ๊ทธ์ธ, ๊ฒ€์ƒ‰๊ธฐ๋ก ๋“ฑ ์›น์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ค ์ผ์„ ํ–ˆ๋Š”์ง€ ์ฟ ํ‚ค์— ์ €์žฅํ•œ๋‹ค
    • ๊ณต๊ฐœ ๊ฐ€๋Šฅํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ์‹œํ‚ด 
    • ์›น์‚ฌ์ดํŠธ ์žฌ๋ฐฉ๋ฌธ์‹œ ํšจ์œจ์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค
    • ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ค‘์š”ํ•œ ์ •๋ณด๋“ค์„ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ถ€์ ์ ˆํ•˜๋‹ค
    • ์ €์žฅ ์œ„์น˜ : ํด๋ผ์ด์–ธํŠธ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” ํ•˜๋“œ๋””์Šคํฌ
    • ๋งŒ๋ฃŒ์‹œ๊ฐ„์— ๋”ฐ๋ผ ํ•ด๋‹น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ๋‚จ์•„์žˆ๋‹ค

     

     

     

    ์„ธ์…˜

     

    • ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค์— ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ด์•„ ๋‘์—ˆ๋‹ค 
    • ๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ๊ณต์šฉ ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ์œ ์ถœ๋  ๊ฒƒ์ด๋‹ค http๋กœ ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋‹ค๋ณด๋ฉด ์ฟ ํ‚ค๊ฐ€ ์œ ์ถœ ๋˜๊ฑฐ๋‚˜ ์กฐ์ž‘์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๋“ค์ด ๋ฐœ์ƒํ•œ๋‹ค 

     

    ๊ทธ๋ฆฌํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ ์„ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜์ด ํƒ„์ƒํ•˜์˜€๋‹ค

     

    • ์„ธ์…˜์€ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค
    • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค
    • ์„ธ์…˜์€ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋ฐฑ, ์ˆ˜์ฒœ, ์ˆ˜๋งŒ์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค๋ฉด ํ•ด๋‹น ์œ ์ €์˜ ์ •๋ณด๋ฅผ ์ฐพ๊ณ  ๋ฐ์ดํ„ฐ ๋งค์นญ์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉด์„œ ์„œ๋ฒ„์— ๋ถ€ํ•˜๊ฐ€ ๊ฐ€ํ•ด์ง€๊ฒŒ ๋œ๋‹ค
    • ์ €์žฅ ์œ„์น˜ : ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ
    • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋งŒ๋ฃŒ์‹œ๊ฐ„์— ์ƒ๊ด€์—†์ด ์‚ญ์ œ๋œ๋‹ค

     

    ๐Ÿ’ก์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ• ๊นŒ?

    1. ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ์„ ํ•˜๋ฉด ์„ธ์…˜ ID๋ผ๋Š” ๊ธฐ๊ฐ„์ด ์งง์€ ์ž„์‹œ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค
    2. ์‚ฌ์šฉ์ž๋Š” ์ด ์ž„์‹œ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•ด๋‹น ์„œ๋ฒ„์— ์ ‘๊ทผํ• ๋•Œ ์„ธ์…˜ ID๋ฅผ ๋ณด๋‚ธ๋‹ค
    3. ์„œ๋ฒ„์—์„œ๋Š” ์ด ์„ธ์…˜ ID๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•œ๋‹ค

     

     

    ํ† ํฐ

     

    ๋งŒ์•ฝ ์„ธ์…˜ ID๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

    ์‹๋ณ„์„ ๋ชปํ•œ๋‹ค

     

    ์ด๋Ÿฐ ์ ์„ ๋ณด์•ˆํ•˜๊ธฐ ์œ„ํ•ด ํ† ํฐ์ด ํƒ„์ƒํ•˜์˜€๋‹ค

     

    Authentication : ์ธ์ฆ. ๋‚ด๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์ฆ๋ช… ! ํ•ด์ฃผ๋Š” ๊ฒƒ.
    Authorization : ์ธ๊ฐ€. ์Œ.. ๋„ˆ๊ตฌ๋‚˜ ! ok ํ†ต๊ณผ๋‹ค

     

     

    ํ•ด๋‹น ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋ฐ€ ํ‚ค๊ฐ€ ์žˆ๋‹ค

    ๋น„๋ฐ€ ํ‚ค๋ฅผ ํ†ตํ•ด์„œ ์ด ํ† ํฐ์ด ์œ ํšจํ•œ์ง€, ํ† ํฐ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•œ๋‹ค

    ๋ฌธ์ž์—ด๋กœ ๋˜์–ด์žˆ๋‹ค

     

     

    ๐Ÿ’ก๊ทธ๋Ÿผ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ• ๊นŒ?

     

    • ์กฐ์ž‘ํ•œ ํ† ํฐ์„ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•˜๋ฉด ์œ ํšจํ•œ ํ† ํฐ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ง‰ํžˆ๊ฒŒ ๋˜๊ณ  ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•˜๊ฒŒ ๋œ๋‹ค

     

     

     

    ๐Ÿ’ก์„ธ์…˜ ๋ณด๋‹ค ์ข‹์„๊นŒ?

     

    • ๊ทธ๊ฑด ์•„๋‹ˆ๋‹ค ํ† ํฐ์€ ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ๊ฐœ์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„๋•Œ ๋งŒ์•ฝ ํ† ํฐ์ด ์œ ํšจํ•œ ํ† ํฐ์ด๋ฉด ๋ชจ๋‘ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค 
    • ๊ทผ๋ฐ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ ‘์†ํ•œ ์  ์žˆ๋Š” ์•„์ด๋””๋กœ ๋‹ค์‹œ ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ง‰๋Š”๋‹ค ๋˜๊ฐ€ ์„œ๋ฒ„์—์„œ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•˜๋‹ค

     

     

    ๊ตฌ์กฐ 

     

    • ํ† ํฐ์€ ํ—ค๋”(Header), ํŽ˜์ด๋กœ๋“œ(payload, ์„œ๋ช…(signature) ์ด๋ ‡๊ฒŒ ์„ธ๊ฐœ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค 

     

    JWT๋ฅผ ๊ฒ€์ฆํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ JSON ๊ฐ์ฒด๋Š” Base64 URL-Safe ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ํ—ค๋”๋Š” jwt๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒ€์ฆ(verify)ํ•˜๋Š”๊ฐ€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. alg๋Š” ์„œ๋ช…์‹œ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ , kid๋Š” ์„œ๋ช…์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค(pubilc/private key)๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

     

    Payload

    JWT์˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ํŽ˜์ด๋กœ๋“œ์— ์žˆ๋Š” ์†์„ฑ๋“ค์„ ํด๋ ˆ์ž„ ์…‹(Claim Set)์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ํด๋ ˆ์ž„ ์…‹์€ jwt์— ๋Œ€ํ•œ ๋‚ด์šฉ(ํ† ํฐ ์ƒ์„ฑ์ž์˜ ์ •๋ณด, ์ƒ์„ฑ์ผ์‹œ,,,)์ด๋‚˜ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ์ฃผ๊ณ ๋ฐ›๊ธฐ๋กœ ํ•œ ๋ฐ์ดํ„ฐ๋“ค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

     

    Signature

    ์ (.)์„ ๊ตฌ๋ถ„์ž๋กœ ํ•ด์„œ ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ํ•ฉ์ง„ ๋ฌธ์ž์—ด์„ ์„œ๋ช…ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์„œ๋ช…์€ ํ—ค๋”์˜ alg์— ์ •์˜๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑํ•˜๊ณ  Base64 URL-Safe๋กœ ์ธ์ฝ”๋”ฉ ํ•ฉ๋‹ˆ๋‹ค.

     

     

     

    ์žฅ์ 

    • header์™€ payload ๋ฅผ ๊ฐ€์ง€๊ณ  signaure๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์œ„๋ณ€์กฐ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค
    • ์ธ์ฆ ์ •๋ณด์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”์—†๋‹ค. (์„œ๋ฒ„ ๋ถ€ํ•˜ ↓)
    • JWT๋Š” ํ† ํฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ •๋ณด๊ณผ ์ „๋‹ฌํ•  ์ •๋ณด ๋ฐ ํ† ํฐ์ด ๊ฒ€์ฆ ๋˜์—ˆ๋‹ค๋Š” ์„œ๋ช… ๋“ฑ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค
    • ํ† ํฐ์€ ํ•œ ๋ฒˆ ๋ฐœ๊ธ‰๋˜๋ฉด ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

     

    ๋‹จ์ 

    • ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜๊ณผ ๋‹ค๋ฅด๊ฒŒ JWT๋Š” ํ† ํฐ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด ์ธ์ฆ ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์‹ฌํ•ด์ง„๋‹ค
    • payload ์ž์ฒด๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š๊ธฐ ๋•จ๋ฌธ์— ์œ ์ €์˜ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์œผ๋ฉด ์•ˆ๋œ๋‹ค
    • ํ† ํฐ์„ ํƒˆ์ทจ๋‹นํ•˜๋ฉด ๋Œ€์ฒ˜ํ•˜๊ธฐ ์–ด๋ ต๋‹ค
    • ํŠน์ • ์‚ฌ์šฉ์ž์˜ ์ ‘์†์„ ๊ฐ•์ œ๋กœ ๋งŒ๋ฃŒํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ, ์ฟ ํ‚ค/์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์„œ๋ฒ„ ์ชฝ์—์„œ ์‰ฝ๊ฒŒ ์„ธ์…˜์„ ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ๋‹ค

     

     

     

     

     

     

    ์ฐธ๊ณ  : https://velog.io/@jung5318/%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%ED%86%A0%ED%81%B0%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

    '๋„คํŠธ์›Œํฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [๋„คํŠธ์›Œํฌ] 3-way handshake ์™€ 4-way handshake  (0) 2024.05.10
    [๋„คํŠธ์›Œํฌ] TCP ์™€ UDP  (0) 2024.05.09
Designed by Tistory.