[Node] Server Authentication (Session vs JWT)

@Joy Lee ยท November 25, 2022 ยท 7 min read

๐Ÿ…ฐ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ (Session / Cookie)

์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์€ ๋กœ๊ทธ์ธ ์‹œ ์„ธ์…˜ ID๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐœ๊ธ‰ํ•ด์ฃผ๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ์‹œ๋งˆ๋‹ค ์„ธ์…˜ ID๊ฐ€ ๋‹ด๊ธด ์ฟ ํ‚ค๋ฅผ ํ—ค๋”์— ๋‹ด์•„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ Statefulํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ธ์ฆ๋ฐฉ์‹

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž์ž„์„ ํ™•์ธํ•˜๊ณ  ๊ณ ์œ ํ•œ ์„ธ์…˜ ID ๊ฐ’์„ ์ƒ์„ฑํ•œ๋‹ค.

  2. ์ƒ์„ฑ๋œ ID ๊ฐ’์€ ์„ธ์…˜ ์ €์žฅ์†Œ์— ์ €์žฅ ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค.

  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ ID๋ฅผ ๋ฐ›์•„ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๊ณ , ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ๋งˆ๋‹ค ์ฟ ํ‚ค์— ์„ธ์…˜ ID๋ฅผ ๋‹ด์•„ ํ—ค๋”์— ์‹ค์–ด ๋ณด๋‚ธ๋‹ค.

  4. ์„œ๋ฒ„์—์„œ๋Š” ์ฟ ํ‚ค๋ฅผ ๋ฐ›์•„ ์„ธ์…˜ ์ €์žฅ์†Œ์™€ ๋น„๊ตํ•ด ์˜ฌ๋ฐ”๋ฅธ ์š”์ฒญ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

  5. ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๊ณ  ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ์‘๋‹ตํ•œ๋‹ค.

์žฅ์ 

์ค‘์š”ํ•œ ์ •๋ณด๋Š” ์„œ๋ฒ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค ์ž์ฒด(์„ธ์…˜ ID)๋Š” ์œ ์˜๋ฏธํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.

๋‹จ์ 

  • ์ฟ ํ‚ค๊ฐ’ ์ž์ฒด๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์•ˆ์ „ํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ํ•ด์ปค๊ฐ€ ํ›”์นœ ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์—์„œ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.(์„ธ์…˜ ํ•˜์ด์žฌํ‚น ๊ณต๊ฒฉ) โ†’ ์„ธ์…˜์— ์œ ํšจ์‹œ๊ฐ„์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค. / B ๋ฐฉ์‹๋„ ๋งˆ์ฐฌ๊ฐ€์ง€.

  • ์„ธ์…˜์„ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚  ๊ฒฝ์šฐ ์„œ๋ฒ„์˜ RAM์— ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์ด๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ ์ด ์—ญ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถ€ํ•˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

  • ์‹œ์Šคํ…œ ํ™•์žฅ์ด ์–ด๋ ต๋‹ค. ๋‹จ์ˆœํ•œ ์‚ฌ์–‘ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์•„๋‹Œ ๋” ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ๋ฆฌ๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„ ์ปดํ“จํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๐Ÿ…ฑ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ(JWT)

ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์€ ๋กœ๊ทธ์ธ ์‹œ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•ด์ฃผ๊ณ , ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•  ๋•Œ HTTP ํ—ค๋”์— ํ† ํฐ์„ ํ•จ๊ป˜ ๋ณด๋‚ด๋„๋ก ํ•˜์—ฌ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ๋” ์ด์ƒ ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์œผ๋กœ๋งŒ ์ธ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Stateless ํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

JWT๋Š” Json Web Token์˜ ์•ฝ์ž๋กœ ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”์‹œํ‚จ ํ† ํฐ์„ ๋œปํ•œ๋‹ค.

์„ธ์…˜/์ฟ ํ‚ค ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ํด๋ผ์ด์–ธํŠธ๋Š” Access Token(JWT)์„ HTTP ํ—ค๋”์— ์‹ค์–ด ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค. A ๋ฐฉ์‹๊ณผ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์„ธ์…˜ ์ €์žฅ์†Œ์— ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋„ฃ๋Š” ๋ฐ˜๋ฉด์— B ๋ฐฉ์‹์€ ํ† ํฐ ์•ˆ์— ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋„ฃ๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์ธ์ฆ์„ ์œ„ํ•ด ์•”ํ˜ธํ™”๋ฅผ ํ•˜๋Š๋ƒ, ๋ณ„๋„์˜ ์ €์žฅ์†Œ๋ฅผ ์ด์šฉํ•˜๋ƒ๋Š” ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ธ์ฆ๋ฐฉ์‹

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์‹œ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž์ž„์„ ํ™•์ธํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ Access Token(JWT)์„ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค.

  2. ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋‹ฌ๋ฐ›์€ ํ† ํฐ์„ ์ €์žฅํ•ด ๋‘๊ณ , ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ๋งˆ๋‹ค ํ† ํฐ์„ HTTP ํ—ค๋”์— ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค.

  3. ์„œ๋ฒ„์—์„œ๋Š” ์•”ํ˜ธํ™”๋œ ํ† ํฐ์„ ๋ณตํ˜ธํ™” ํ•ด ์˜ฌ๋ฐ”๋ฅธ ์š”์ฒญ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

  4. ์ธ์ฆ์ด ์™„๋ฃŒ๋˜๊ณ  ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ์‘๋‹ตํ•œ๋‹ค.

์žฅ์ 

  • ๊ฐ„ํŽธํ•˜๋‹ค. A ๋ฐฉ์‹์€ ์ €์žฅ์†Œ์˜ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ Access Token์„ ๋ฐœ๊ธ‰ํ•ด์ค€ ํ›„ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๊ฒ€์ฆ๋งŒ ํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š” ์—†๋‹ค. ์ฆ‰ Stateless ํ•˜๋‹ค.

  • ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ ์ด ์‚ฌ๋ผ์ง„๋‹ค. ํ•˜์ง€๋งŒ, ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ์˜ ์ทจ์•ฝ์ ์— ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค.

  • ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ํ† ํฐ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ์ธ์ฆ ์‹œ์Šคํ…œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Ex) facebook, Google..

๋‹จ์ 

  • ์ด๋ฏธ ๋ฐœ๊ธ‰๋œ JWT๋ฅผ ๋Œ์ดํ‚ฌ ์ˆ˜ ์—†๋‹ค. A ๋ฐฉ์‹์ฒ˜๋Ÿผ ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์„ธ์…˜์ด ์•…์˜์ ์œผ๋กœ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ ์ง€์›Œ๋ฒ„๋ฆฌ๋ฉด ๋˜์ง€๋งŒ, JWT๋Š” ํ•œ ๋ฒˆ ๋ฐœ๊ธ‰๋˜๋ฉด ์œ ํšจ๊ธฐ๊ฐ„์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€๋Š” ๊ณ„์† ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰ ์œ ํšจ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๊ธฐ ์ „๊นŒ์ง€ ์‹ค์ปท ํ„ธ๋ฆด ์ˆ˜ ์žˆ๋‹ค

  • JWT์˜ ๊ธธ์ด๊ฐ€ ๊ธธ๋‹ค. ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„์˜ ์ž์› ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ฒฐ๋ก 

์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณผ๊ฑฐ์— ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ์‹์ด๋‹ค. ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์ด์ง€๋งŒ ํ† ํฐ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด ํ•ดํ‚น์˜ ์œ„ํ—˜์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.




REFERENCE
์‰ฝ๊ฒŒ ์•Œ์•„๋ณด๋Š” ์„œ๋ฒ„ ์ธ์ฆ 1ํŽธ - https://tansfil.tistory.com/58?category=255594
[JWT] ํ† ํฐ(Token) ๊ธฐ๋ฐ˜ ์ธ์ฆ์— ๋Œ€ํ•œ ์†Œ๊ฐœ - velopert.com/2350

Joy Lee
FRONTEND DEVELOPER