Cookie, Session, and Token
Cookie
์ฟ ํค๋ฅผ ์ด์ฉํด์ ์๋ฒ๋ 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