Session / Token

์„ธ์…˜

Session based Auth flow
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋‘˜๋‹ค ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.
  • ๋กœ๊ทธ์ธ์ด ์œ ์ง€๋ ์ˆ˜์žˆ๋„๋ก ์ฟ ํ‚ค์— ์„ธ์…˜ID๋ฅผ ์ €์žฅํ•˜์—ฌ์„œ ๊ธฐ์–ตํ•˜๊ณ ์žˆ๋‹ค๊ฐ€ ์ดํ›„ ํ™•์ธํ•˜๊ณ  ๋กœ๊ทธ์ธ์„ ์œ ์ง€์‹œ์ผœ์ค€๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๊ฐ€ ๋ฌธ์ œ๊ฐ€์ƒ๊ฒจ์„œ ๊บผ์ ธ๋ฒ„๋ฆฌ๋ฉด ์ฃ„๋‹ค ๋‚ ๋ผ๊ฐ€๋ฒ„๋ฆฐ๋‹ค. (ํœ˜๋ฐœ์„ฑ)
    • โ†’ ๋ณด์™„ํ•˜๊ธฐ์œ„ํ•ด "ํ† ํฐ" โ‡’ JWT (JSON WEB TOKEN)
  • Stateful
  • ํด๋ผ์ด์–ธํŠธ ํ†ต์ œ๋ฅผ ํ• ์ˆ˜์žˆ๋‹ค
    • ํ•œ๊ธฐ๊ธฐ์—์„œ๋งŒ ๋กœ๊ทธ์ธํ• ์ˆ˜์žˆ๊ฒŒ ๋งŒ๋“œ๋ ค๋ฉด, ๊ธฐ์กด ์„ธ์…˜์„ ์ข…๋ฃŒํ•œ๋‹ค.(์„œ๋ฒ„๊ฐ€ ๊ฐ–๊ณ ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋ฒ„๋ฆฌ๋ฉด๋œ๋‹ค) JWT๋ฐฉ์‹์€ ์„œ๋ฒ„๊ฐ€ ๊ฐ–๊ณ ์žˆ๋Š”๊ฒŒ ์—†๊ธฐ๋•Œ๋ฌธ์— ์–ด๋–ป๊ฒŒ ํ• ์ˆ˜๊ฐ€์—†์Œ

ํ† ํฐ

Token Based Auth flow (JWT)
  • ํด๋ผ์ด์–ธํŠธ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•˜๊ฒŒ ํ•œ๋‹ค.(์„œ๋ฒ„๋Š” ๊ธฐ์–ต์•ˆํ•จ)
  • ํ† ํฐ : xxxxxx.yyyyyyyyyyy.zzzzzzzzzzzzz
    • โ‡’ yyyyy === ํ† ํฐ์— ๋‹ด๊ธด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด (ํŽ˜์ด๋กœ๋“œ): ํด๋ ˆ์ž„
      โ‡’ xxxxx === ํ—ค๋”, ํƒ€์ž… ๋“ฑ์˜ ์ •๋ณด
      โ‡’ zzzzz === ์•”ํ˜ธํ™”๋ฐฉ์‹ , HS256 ๋“ฑ์˜ ์ •๋ณด
  • ์‹œ๊ฐ„์—๋”ฐ๋ผ ์ƒํƒœ๊ฐ’์ด ๋ฐ”๋€Œ์ง€์•Š๋Š” Stateless
  • JWT๋‹จ์  : ์„ธ์…˜์€ ํด๋ผํ†ต์ œ๋ฅผ ํ• ์ˆ˜์žˆ์ง€๋งŒ ํ† ํฐ์„ ๋ถˆ๊ฐ€ํ•˜๋‹ค
    • ๋ณด์™„๋ฐฉ๋ฒ• : refreshToken
      ํ† ํฐ์„ ๋‘๊ฐœ(AccessToken, RefreshToken)๋ฅผ ์ฃผ๊ณ  ๊ธฐ์กด ํ† ํฐ(Accesstoken)์˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์•„์ฃผ ์งง๊ฒŒ(๋ช‡์‹œ๊ฐ„์ •๋„)ํ•œ๋‹ค.
      RefreshToken์˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„์€ 2์ฃผ~1๋‹ฌ ์ •๋„ refreshtoken์€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋„ ์ €์žฅํ•œ๋‹ค.
      ํด๋ผ์ด์–ธํŠธ์˜ accesstoken์ด ๋งŒ๋ฃŒ๋˜๋ฉด refreshtoken์š”์ฒญ์„ ํ•˜๊ณ  , ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ refreshtoken๊ณผ ๋Œ€์กฐํ•ด๋ณด๊ณ  ๊ฐ™๋‹ค๋ฉด ์ƒˆ๋กœ์šด accesstoken์„ ๋ฐœ๊ธ‰ํ•ด์„œ ๋‹ค์‹œ ํด๋ผ์—๊ฒŒ ๋ณด๋‚ด์ค€๋‹ค.
      notion image