SERVER

[Server] Session ๊ณผ JWT

girin_dev 2022. 11. 29. 23:27
728x90
๋ฐ˜์‘ํ˜•

๐Ÿฅ• Http ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์ด ๋๋‚˜์ž๋งˆ์ž ์ƒํƒœ์ •๋ณด๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฐ๋‹ค (Stateless)  ๋”ฐ๋ผ์„œ ํ†ต์‹ ์„ ํ•  ๋•Œ๋งˆ๋‹ค, ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์š”๊ตฌํ•œ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ์ฆ์„ ํ•˜๊ฒŒ๋œ๋‹ค.

 

๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ , ์ธ์ฆ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ , ๋ฐ˜๋ณต๋˜๋Š” ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋ฅผ ํ”ผํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ธ์ฆ์— ์ž์ฃผ ์“ฐ์ด๋Š” ์„ธ์…˜๊ณผ ํ† ํฐ์„ ๋น„๊ตํ•œ๋‹ค.

 

 

 


 

 

 

 

๐Ÿ˜ข  Session  :  ์œ ์ € ์ธ์ฆ ์„ฑ๊ณต ์ดํ›„ ์„œ๋ฒ„์— ์„ธ์…˜ ์ €์žฅ. ์ €์žฅ ํ›„ response๋ฅผ ํ†ตํ•ด ์œ ์ €์˜ ์ฟ ํ‚ค์— ์„ธ์…˜ ID ๊ฐ€ ์ €์žฅ๋˜๋„๋ก ํ•œ๋‹ค. ์œ ์ € ์ธก์—์„œ http๋ฅผ ์š”์ฒญํ•  ๋–„์—๋Š” Session id ๊ฐ€ ํฌํ•จ๋œ ์ฟ ํ‚ค๊ฐ€ ํ—ค๋”์— ํฌํ•จ๋˜๋ฉฐ, ์„œ๋ฒ„๋Š” Session id ๋ฐ Session Storage์—์„œ์˜ ์ •๋ณด๋ฅผ ๋Œ€์กฐ ํ›„, ์œ ์ € ๋ฐ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์‹๋ณ„ํ•œ๋‹ค. 

 

 

 

์š”์ฒญ์—๋„ ์ฟ ํ‚ค๊ฐ€ ์žˆ๊ณ ,

 

์‘๋‹ต์—๋„ ์ฟ ํ‚ค๊ฐ€ ์žˆ๋‹ค.

 

์„ธ์…˜์€ ํด๋ผ์ด์–ธํŠธ์— ๋”ฐ๋ผ ๊ณ ์œ ์˜ session ID๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋Š” ์„ธ์…˜ ์•„์ด๋””๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.

์„ธ์…˜ ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜ ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ์‚ญ์ œํ–ˆ์„ ๋•Œ ์‚ญ์ œ๊ฐ€ ๋˜๋ฏ€๋กœ, ์ฟ ํ‚ค๋ณด๋‹ค๋Š” ๋น„๊ต์  ๋ณด์•ˆ์ด ์ข‹๋‹ค. 

 

๐Ÿฆ ์„ธ์…˜๋„ ์ฟ ํ‚ค(์ฟ ํ‚ค๋Š” ์ €์žฅ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๋‹ค.  

 

 

โ€ป ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ PC์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  Session์€ ์›น ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

https://hahahoho5915.tistory.com/32

 

 

์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์˜ ์ž์›์„ ์“ฐ์ง€ ์•Š์ง€๋งŒ, ์„ธ์…˜์€ ์„œ๋ฒ„์˜ ์ž์›์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

๋”๋ณด๊ธฐ

์ฟ ํ‚ค?


์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ ๋กœ์ปฌ์— ์ €์žฅํ•œ๋‹ค๋ฉด,  ๋ณ€์งˆ ๋˜๋Š” request์—์„œ ์Šค๋‹ˆํ•‘ ๋‹นํ•  ์šฐ๋ ค๊ฐ€ ์žˆ๋‹ค.

 

 ํŒŒ์ผ๋กœ ์ €์žฅ๋œ๋‹ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ์ •๋ณด๊ฐ€ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ๋งŒ๋ฃŒ๊ธฐ๊ฐ„์„ ๋”ฐ๋กœ ์ง€์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๋ฐ˜๋ฉด์— ๋กœ์ปฌ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋ฏ€๋กœ ์„ธ์…˜( ์ •๋ณด๊ฐ€ ์„œ๋ฒ…์— ์žˆ์Œ ) ์— ๋น„ํ•ด ์š”์ฒญ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์€ ์žˆ๋‹ค.     ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ์ƒํ™ฉ์—๋Š” ์ฟ ํ‚ค๋ฅผ ์จ์„œ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๊ด€๋ฆฌ์— ๋„์›€์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค.


 

 

 


 

 

 

 

๐Ÿ˜’ JWT :  jason web token์œผ๋กœ header, payload, signature๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. 

 

https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

 

json ํ˜•์‹์˜ ํ† ํฐ์œผ๋กœ payload์— ํ‚ค , value ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๋งŒ๋ฃŒ์‹œ๊ฐ„๋„ ์ง€์ •๊ฐ€๋Šฅ ํ•˜๋ฉฐ,  HS256 ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ signature ํ‚ค๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. 

 

๐Ÿคจ jwt์˜ ํ•ต์‹ฌ์€ ์„ธ์…˜๊ณผ ๋‹ฌ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ์ด ๋œ๋‹ค๋Š” ์ ์ด๋‹ค. 

 

ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์—, Session ๋ณด๋‹ค ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋œ ์“ฐ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

JWT๊ฐ€ ์„ธ์…˜๋ณด๋‹ค ์œ ๋ฆฌํ•œ ์ ์€ ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ ๊ณต๊ฐ„์„ ํ™•๋ณด ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ JWT๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€,  ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ๋งˆ๋‹ค ํ—ค๋”์— ํ† ํฐ์„ ์‹ค์–ด์„œ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค. 

 

 

JWT ๋Š” ํ‚ค ๊ฐ’์— ์˜ํ•œ ์ธ์ฆ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, Session๊ณผ ๋‹ฌ๋ฆฌ DB์™€์˜ ํ†ต์‹ ์„ ์ƒ๋žต ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    

 

  • Session์„ ์“ธ ๊ฒฝ์šฐ์—๋Š” ์ ‘์† ๋ฐ API์˜ ์‚ฌ์šฉ ์‹œ, DB์˜ ์ปค๋„ฅ์…˜์„ ์ง€์†์ ์œผ๋กœ ์†Œ๋ชจํ•˜๊ฒŒ ๋˜๋Š” ๋‹จ์ ์ด ์žˆ๋Š”๋ฐ,  ๋‹ค์Œ ๋ฐฉ์‹๋“ค๋กœ ์ผ์ • ๋ถ€๋ถ„ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ธด ํ•˜๋‹ค. 
    • File Storage ๋ฐฉ์‹
      • ์„œ๋ฒ„์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋กœ ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์„ธ์…˜์ด ์ €์žฅ ๋˜๋Š”๋ฐ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ ๋ฐœ์ƒ.  ๋‹จ์ผ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์—์„œ ๊ธฐ์กด์˜ ์„ธ์…˜์ด ์‚ฌ์šฉํ•˜๋˜ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„๋กœ ์„ธ์…˜์„ ํ•ญ์‹œ ๋„˜๊ฒจ์ค˜์•ผ ํ•œ๋‹ค.
    • In Memory ๋ฐฉ์‹
      • ์„œ๋ฒ„๊ฐ€ ์ฃฝ๋Š” ๊ฒฝ์šฐ, ๋กœ๊ทธ์ธ ์œ ์ €๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ,  → ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ๋ฐœ์ƒ.
    • ์Šค์ผ€์ผ ์•„์›ƒ ์ฒ˜๋ฆฌ
      • DB๊ฐ€ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๊ณ , ์‚ฌ์šฉ์ž์˜ ์ ‘์†์ด ์–ด๋А ์ชฝ ์„œ๋ฒ„๋กœ ์˜ฌ ์ง€ ๋ชจ๋ฅธ๋‹ค๋ฉด, Session์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ฐœ๋ฐœ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋” ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
      • ์ด๋Š” ํŠน์ • ์„ธ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ์„ธ์…˜์—์„œ๋งŒ ํ†ต์‹ ํ•˜๋„๋ก ํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ๊ธฐ์ˆ ์ด ํ•„์š” ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿ˜’ JWT ์˜ ๋‹จ์  : 

  • JWT ๋Š” ํŽ˜์ด๋กœ๋“œ์˜ ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๋น„์šฉ์ด ์ปค์ง„๋‹ค. 
  • ํ† ํฐ์ด ํƒˆ์ทจ ๋‹นํ•œ ๋‹ค๋ฉด ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ๊นŒ์ง€ ๋Œ€์ฒ˜๊ฐ€ ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ( xss ๊ณต๊ฒฉ์— ์ทจ์•ฝ) 
    • ๋•Œ๋ฌธ์— ๋งŒ๋ฃŒ์ผ์ž๋ฅผ ์งง๊ฒŒ ์žก์•„์•ผ ํ•œ๋‹ค.

 

 

 

๐Ÿ˜ JWT๋ณด๋‹ค Session์ด๋ผ๋ฉด ? 

  • Session์€ ๋กœ๊ทธ์ธ ๋œ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•˜๊ณ  ์žˆ์–ด์„œ, ์œ ์ €์— ๋Œ€ํ•œ ํ†ต์ œ๊ฐ€ JWT๋ณด๋‹ค ๋น„๊ต์  ์‰ฝ๋‹ค.
  • JWT๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค๋Š” ์žฅ์ ๋„ ์žˆ๋‹ค.
  • ํ† ํฐ์ด ํƒˆ์ทจ๋‹นํ•  ๊ฒฝ์šฐ ๋งŒ๋ฃŒ์‹œ๊นŒ์ง€ ๋Œ€์ฒ˜๊ฐ€ ์•ˆ๋˜๋Š” ์ƒํ™ฉ๋„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ JWT๋ฅผ ๋” ๋งŽ์ด ์“ด๋‹ค.

Session์„ ์œ„ํ•œ ์„œ๋ฒ„ ์„ค์ •์ด๋‚˜ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค ํˆฌ์ž…๊ณผ JWT๋ฅผ ํ†ตํ•ด ์•„๋‚„ ์ˆ˜์žˆ๋Š” ์ž์› ์ด๋“์ด ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ด๋‹ค.

 

 

 

 

 

๋ฌผ๋ก  JWT๊ฐ€ ๋งŒ๋Šฅ์ด ์•„๋‹ˆ๋‹ค. JWT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‹จ์ ๊ณผ ์œ„์— ์–ธ๊ธ‰ํ•œ ๋‚ด์šฉ์€ ์–ธ์ œ๋‚˜ ์žฅ์ ์ด๊ธฐ๋งŒ ํ•˜์ง€๋Š” ์•Š๋‹ค.

 

 

 

JWT์— ๋Œ€ํ•œ ์˜คํ•ด์™€, ์„ธ์…˜์œผ๋กœ JWT(Json Web Token)์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž๋Š” ์ฃผ์žฅ์˜ ์ •๋ฆฌ.

์ตœ๊ทผ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด JWT๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๊ธ€์ด ๋งŽ๋‹ค. ์ด ํฌ์ŠคํŠธ๋Š” ๊ทธ์— ๋Œ€ํ•œ ๋ฐ˜๋ฐ•์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธ€์ด๋‹ค. ์ฃผ์š” ํ‚ค์›Œ๋“œ๋ฅผ ๋จผ์ € ์ •์˜ํ•˜๊ฒ ๋‹ค. Stateless JWT: ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” JWT ํ† ํฐ

team00csduck.tistory.com

 

 

์ž˜๋ชป๋œ ๋‚ด์šฉ์€ ์ง€์  ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

320x100
๋ฐ˜์‘ํ˜•