Session๊ณผ Token์ ๋ฌด์์ผ๊น?
๐ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ๋์ด์๋ ์ํ๋ฅผ ์๋ฒ๊ฐ ์ธ์งํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ๋ค ์ค ํ๋.
์ธํฐ๋ท์ ์ด์ฉํ ๋ ์ฐ๋ HTTP๋ Stateless(์ํ๊ฐ ์๋, ๋ฌด์ํ์) ํ๋กํ ์ฝ์ด๋ผ,
๋ชจ๋ ์์ฒญ์ด ์ด์ ์์ฒญ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ค๋ค์ง๊ธฐ ๋๋ฌธ์ ์์ฒญ๋ผ๋ฆฌ ์๋ก ์ฐ๊ฒฐ๋์ง ์๋๋ค.
์ด ๋ง์ ํ๋์ ์์ฒญ์ด ๋๋๋ฉด ์๋ฒ๋ ์ด์ ์์ฒญ์ ๋ํ ์ฌ์ฉ์๊ฐ ๋๊ตฌ์ธ์ง ์์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์
์ฌ์ฉ์๊ฐ ์ด๋ฏธ ๋ก๊ทธ์ธ๋ ์ํ์ฌ๋ ๋ก๊ทธ์ธ์ด ํ์ํ ์๋น์ค or ํ๋ฉด์ ์ ๊ทผํ๋ ค๋ฉด
์๋ก์ด ์์ฒญ์ ํ ๋๋ง๋ค ์ฌ์ฉ์๋ ๊ณ์ ๋ก๊ทธ์ธ์ ๋ฐ๋ณตํ๋ฉฐ ์๋ฒ์๊ฒ ์์ ์ด ๋๊ตฌ์ธ์ง
์๋ ค์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ์๋ค ์ค์ ํ๋์ธ
session(์ธ์ )๊ณผ token(ํ ํฐ)์ ์ด์ฉํ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค.
์ธ์ ๊ณผ ํ ํฐ์ ๋ํด ์์๋ณด๊ธฐ ์ ์ ๋จผ์ Authentication(์ธ์ฆ)๊ณผ Authorization(์ธ๊ฐ, ํ๊ฐ)์ ๋ํด ๊ฐ๋จํ ์์๋ณด์.
๐ Authentication(์ธ์ฆ)
์ธ์ฆ์ ์ฝ๊ฒ, ๋ก๊ทธ์ธ ํ๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
ํด๋น ์๋น์ค์ ์ฌ์ฉ์๊ฐ ๋ง๋์ง ์ ์์ ํ์ธํ๋ ๊ณผ์ ์ด๋ค.
๐ Authorization(์ธ๊ฐ)
์ธ๊ฐ๋ ์ธ์ฆ(๋ก๊ทธ์ธ)๋ ์ฌ์ฉ์์๊ฒ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋๋ก ์ฌ์ฉ ๊ถํ์ ๋ถ์ฌํ๋ ์์ ์ผ๋ก,
์ก์ธ์ค๊ฐ ํ์ฉ๋ ๋ฐ์ดํฐ ๋ฐ ํด๋น ๋ฐ์ดํฐ๋ก ํ ์ ์๋ ์์
๋ค์ ์ง์ ํ๋ค.
๐ง๐ป ๋์ ์์๋ ฅ์ ์ด๋์ํ ์์ ์ํฉ ๐ง๐ป
๋ฐ๋ค ์์ ๋ ์๋ ์ดํธํ ํฌ๋ฃจ์ฆ๋ผ๊ณ ์์ํด๋ณด๋ฉด ๐ข
ํฌ๋ฃจ์ฆ์ ํ์นํ ํ์น๊ฐ๋ค์ < ํฌ๋ฃจ์ฆ ์น์ ๊ถ > ์ ํตํด ํ์น๊ฐ์์ Authentication(์ธ์ฆ) ๋ฐ์ ์ฌ๋๋ค์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด ํฌ๋ฃจ์ฆ ์์๋ ์์ฃผ ์ ๋ช ํ๊ณ ๋ฉ์ง ์ดํธํ ๋ญ์ ๋ฆฌ ๋ผ์ด์ง๊ฐ ์๋๋ฐ,
์ด ๋ผ์ด์ง๋ ๋ชจ๋ ํ์น๊ฐ์ด ์ด์ฉํ ์ ์๋ ๊ณณ์ด ์๋๋ผ 100% ์์ฝ์ ๋ก๋ง ์ด์๋๋ ๋ผ์ด์ง์๋ค.
๊ทธ๋์ ๋ชจ๋ ํ์น๊ฐ์ด ์ด์ฉํ ์๋ ์๊ณ , ๋ผ์ด์ง ์ ๊ตฌ์ ์๋ ์์ฝ์ ๋ช ๋จ์์
< ํด๋น ํ์น๊ฐ์ ์ด๋ฆ์ด ์์ฝ์ ๋ช ๋จ์ ์๋์ง ํ์ธ - Authorization(์ธ๊ฐ) > ์
์์๋ฅผ ๊ฑฐ์ณ์ผ๋ง, ๋ง์นจ๋ด! ๋ผ์ด์ง์ ์ ์ฅ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์์ ์ ์ ์์๊ฐ ์ ์ ํ์ง ์์ ์ ์์ง๋ง....๐
์ํฉ์ ์ ๋ฆฌํด ๋ณด๋ฉด,
๐ ํ์น๊ถ์ผ๋ก ํฌ๋ฃจ์ฆ์ ์น์ ํ๋ ํ์ = ๋ก๊ทธ์ธ = Authentication(์ธ์ฆ)
๐ ํฌ๋ฃจ์ฆ ํ์น๊ฐ = ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์
๐ซ ๊ฐ์ธ ๊ฐ์ค = ์ธ๊ฐ๋ฐ์ ์ฌ์ฉ์๋ง ํ์ธํ ์ ์๋ ํ๋ฉด ๋ฐ ์ ๋ณด๋ค (๋์ ์ ๋ณด, ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํ ์ ์๋ ๊ฒ๋ค ๋ฑ๋ฑ)
๐ซ ๊ฐ์ธ ๊ฐ์ค ์ด์ฉ๊ฐ = ์์ฒญ์ ๋ํ ์ ๊ทผ ๊ถํ์ Authorization(์ธ๊ฐ) ๋ฐ์ ์ฌ์ฉ์.
์ผ๋ก ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ๐๐
1. Session & Session Cookie
์ธ์ ์ ์ด๋ค ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ด ๋์ด์๋ค๋ ๊ฒ์ <session id> ๋ฅผ ํตํด ์๋ฒ๊ฐ ์ธ์งํ๊ณ ์๋ ์ํ์ด๋ค.
์ ์ฒด์ ์ flow๋ ์๋์ ๊ฐ๋ค.
1) ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ์๋ฒ๊ฐ ์ฌ์ฉ์๋ฅผ ์ํ ์ธ์ ์ ๋ง๋ค๊ณ , ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์๋น์ค ํ๊ฒฝ์ ๋ฐ๋ผ
๋ฉ๋ชจ๋ฆฌ, ํ๋๋์คํฌ, DB ๋ฑ์ ์ ์ฅํ๋ค. ( ์ด๋ ์ธ์
์ ์๋ณํ๊ธฐ ์ํ ์ธ์
id๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ณด๋ฅผ ์๋ฒ ์ธก์ ์ ์ฅ. )
2) ์๋ฒ์์ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์ ์ธก)๋ก ์ธ์
id๊ฐ ๋ด๊ธด ์ฟ ํค๋ฅผ ๋ณด๋ด๊ณ (Set-cookie), ์ด ์ธ์
id๋
์ฌ์ฉ์๊ฐ ์ธ์ฆ์ด ํ์ํ ํ๋์ ํ๋ ๋์ ํด๋ผ์ด์ธํธ ์ธก ๋ธ๋ผ์ฐ์ ์ ์๋ ์ฟ ํค์ ์ ์ฅ๋๋ค.
3) ํด๋ผ์ด์ธํธ๋ ํด๋น ์ฌ์ดํธ์ ๋ํ ์ฌ์ฉ์์ ์ธ๊ฐ๊ฐ ํ์ํ ๋ชจ๋ ์์ฒญ์ ์ธ์
id๋ฅผ ์ฟ ํค์ ๋ด์ ์๋ฒ์ ์ ์กํ๋ค.
4) ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์ธ์
id์ ์๋ฒ ์ธก์ ์ ์ฅ๋ ์ธ์
id๋ฅผ ๋น๊ตํ์ฌ verification(์ ํจ์ฑ ๊ฒ์ฆ) ๋ฐ
Authorization(์ธ๊ฐ)์ ํตํด ํด๋น ์์ฒญ์ ๋ํ Response๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์ ๋ณด๋ธ๋ค.
5) ์ดํ ์๋ฒ๋ ์ฌ์ฉ์๊ฐ ์ฒ์ ๋ก๊ทธ์ธํ ๋ ์ ์ฅ๋ ์ธ์
id๋ก ์ฟ ํค์ ๋ด๊ธด ์ธ์
id๋ฅผ ํ์ธํ ์ ์๋ค.
์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์์ ๋ก๊ทธ์์ํ๋ฉด ํด๋น ์ธ์
๋ฐ์ดํฐ๊ฐ ์๋ฒ ์ธก์์ ์ญ์ ๋๋ค.
session & cookie ๋ฐฉ์์ ์ด์ฉํ๊ฒ ๋๋ฉด ์ด๋ ๊ฒ ์ธ๊ฐ๊ฐ ํ์ํ ์์ฒญ์ด ์์ ๋๋ง๋ค ์ฟ ํค์ ๋ด๊ธด ์ธ์ id๋ฅผ ๋ณด๊ณ ,
์๋ฒ์ธก์ ์ ์ฅ๋ ์ธ์ id์ ๋น๊ต ๋ฐ ํ์์ ํด์ผ ํ๊ณ , ์ฌ์ฉ์๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ ์ธ์ Id๋ฅผ ์ ์ฅํ ๊ณต๊ฐ๋ ๋ ํ๋ณดํด์ผ ํ๋ค.
ํ์ง๋ง ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ๋ชจ๋ ์ ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์Stateful์ ์ฅ์ ์ ํ์ฉํ ์ ์๋๋ฐ,
๊ฐ์ ๋ก๊ทธ์์( ๊ทธ๋ฅ ์ธ์ ์ ์ญ์ ํ๋ฉด ๋๋ค. ), ์ ์ ์ธ์ ์ ํ( ๋ทํ๋ฆญ์ค ), ๋ก๊ทธ์ธ๋ ๋ชจ๋ ๋๋ฐ์ด์ค ์ ๋ณด ํ์ธ ๋ฑ๋ฑ
๋ก๊ทธ์ธ๊ณผ ๊ด๋ จ๋ ๋ค๋ฐฉ๋ฉด์ผ๋ก ํ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Cookie ๋?
Cookie(์ฟ ํค)๋ ์น ์ฌ์ดํธ์ ์ ์ํ ๋ ์๋ฒ์ ์ํด ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์ ๋ณด๋ฅผ ์๋ฏธํ๋ค.
์ฌ์ฉ์๋ฅผ ์๋ณํ๊ณ , ์ธ์ ์ ์ ์งํ๋ ๋ฐฉ์์ด๋ฉฐ, ์น ์ฌ์ดํธ๋ ์ ์ฅ๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ
์ฌ์ฉ์ ์ธก ๋ธ๋ผ์ฐ์ ์ ๋จ๊ฒจ, ํ์ํ ๋๋ง๋ค ์ฌ์ฌ์ฉํ๋ฉฐ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ค.
๋ค๋ง ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ์ปดํจํฐ์ ๋จ๊ธฐ ๋๋ฌธ์ ์ฌ์ํ ์นจํด ๋ฐ ๋ณด์ ์ด์๋ค์ด ์๋ค.
์ฟ ํค๋ Key=value ํํ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ์ ์ String์ด๊ณ , ๊ณต๊ฐ ์ ์ฝ์ด ์์ด์ 4KB ์ด์ ์ ์ฅ์ด ๋ถ๊ฐ๋ฅํ๋ค.
Set-Cookie: <cookie-name>=<cookie-value>โ
โ ์ฟ ํค๋ ์ ํจ๊ธฐ๊ฐ์ด ์๊ณ , ์๋ฒ๊ฐ ์ ํ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ์ ํจํ๋ค.
โ ์ฟ ํค๋ ์ธ์ฆ๋ฟ๋ง ์๋๋ผ, ๋ค์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
1) ์ธ์ ๊ด๋ฆฌ : ์๋ฒ์ ์ ์ฅํด์ผ ํ ๋ก๊ทธ์ธ, ์ฅ๋ฐ๊ตฌ๋, ๊ฒ์ ์ค์ฝ์ด ๋ฑ์ ์ ๋ณด ๊ด๋ฆฌ.
2) ๊ฐ์ธํ : ์ฌ์ฉ์ ์ ํธ, ํ ๋ง ๋ฑ์ ์ธํ .
3) ํธ๋ํน : ์ฌ์ฉ์ ํ๋์ ๊ธฐ๋กํ๊ณ ๋ถ์ํ๋ ์ฉ๋.
โ ์ธ์ ์ฟ ํค๋ ํ์ฌ ์ธ์ ์ด ๋๋ ๋ ์ญ์ ๊ฐ ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ "ํ์ฌ ์ธ์ "์ด ๋๋๋ ์์ ์ ์ ์ํ๋ค.
์ด๋ค ๋ธ๋ผ์ฐ์ ๋ค์ ์ฌ์์ํ ๋ ์ธ์ ์ ๋ณต์ํด์ ์ธ์ ์ฟ ํค๊ฐ ๋ฌด๊ธฐํ ์กด์ฌํ ์ ์๋๋ก ํ๋ค.
โ ์ง์ ์ฟ ํค๋ Expires ๋๋ Max-Age ๋ผ๋ ์์ฑ์ ๋ช ์๋ ๋ ์ง์ ์ญ์ ๊ฐ ๋๋ค.
โ ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ์๋ง ์๋ค. ๐ Native App์์ ์ฌ์ฉ ๋ถ๊ฐ.
โ ๋๋ฉ์ธ๊ณผ ํจ์ค ๋๋ ํฐ๋ธ๋ ์ฟ ํค์ ์ค์ฝํ๋ฅผ ์ ์ํ๋ค.(์ด๋ค URL๋ก ์ฟ ํค๋ฅผ ๋ณด๋ด์ผ ํ๋์ง)
์ฟ ํค์ ๋ํด ๋ ์์๋ณด๊ธฐ
2. JWT(Json Web Token)
JWT๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ ํฐ์ผ๋ก, ์ด ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ธ(Signature)๋ ํ ํฐ์ ํตํด
ํด๋น ํ ํฐ์ด ์ ํจํ์ง ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ DB ์์ด ์ธ์ฆ ๋ฐ ์ธ๊ฐ๊ฐ ๊ฐ๋ฅํ๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์๊ณผ ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์๋ฒ ์ธก์ ์ ์ฅํ๋์ง์ ์ฌ๋ถ์ด๋ค.
xxxxx.yyyyy.zzzzz
JWT๋ ์ด๋ ๊ฒ ์ (.) ๊ตฌ๋ถ์๋ก ์ฐ๊ฒฐ๋ผ ์๋ 3๊ฐ์ง์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด๋ค.
1. ๋นจ๊ฐ ๊ธ์จ ๋ถ๋ถ์ Header
2. ๋ณด๋ผ์ ๊ธ์จ ๋ถ๋ถ์ Payload
3. ํ๋์ ๊ธ์จ ๋ถ๋ถ์ Signature
Header ๋ถ๋ถ์ ๋์ฝ๋ฉ ํ๋ฉด 2๊ฐ์ง ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋๋ฐ ํ ํฐ์ ํ์ (ํ ํฐ์ ํ์ ์ JWT ๊ณ ์ ๊ฐ)๊ณผ
์๊ณ ๋ฆฌ์ฆ ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
Payload ๋ถ๋ถ์ ์ฌ์ฉ์์ ์ ๋ณด๋ ๋ฐ์ดํฐ ์์ฑ ๋ฑ์ claim์ด ๋ค์ด์๋๋ฐ,
์๋น์ค ์ธก์์ ์ฌ์ฉ์์๊ฒ ์ด ํ ํฐ์ ํตํด ๊ณต๊ฐํ๊ธฐ ์ํ๋ ๋ด์ฉ์ด ๋ค์ด๊ฐ๋ค.
๋ณดํต ๋๊ฐ ๋๊ตฌ์๊ฒ ๋ฐ๊ธํ๋์ง, ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ, ์ฌ์ฉ์ ์ด๋ฆ, role ๋ฑ์ Jsonํํ๋ก ์ํ๋ ๋๋ก ๋ด์ ์ ์๋ค.
Signature๋ ์๋ช ๋ถ๋ถ์ผ๋ก, Header + Payload + <์๋ฒ์ ๊ฐ์ถฐ๋ Secret Key> ์
Header์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฃ๊ณ ๋๋ฆฌ๋ฉด Signature(์๋ช ) ๊ฐ์ด ๋์จ๋ค.
1) ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ์๋ฒ์์๋ JWTํํ์ ์ํธํ๋ ํ ํฐ์ ๋ฐ๊ธ(์์ฑ)ํ๋ค.
2) ์์ฑ๋ ํ ํฐ(์ํธํ๋ JWT)์ ํด๋ผ์ด์ธํธ์ ๋ณด๋ธ๋ค.
3) ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ํ ํฐ์ ๋ฐ์ผ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ ์ธก์ localStorage์ ์ ์ฅํ๊ณ , ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์ํ๋ฉด
ํ ํฐ์ด ํด๋ผ์ด์ธํธ ์ธก(localStorage)์์ ์ญ์ ๋๋ค.
4) ์ฌ์ฉ์๊ฐ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๊ฐ ํ์ํ ์์ฒญ์ ํ ๋ header์ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ ๋ด์์ ๋ณด๋ธ๋ค.
5) ์๋ฒ ์ธก์์๋ ์์ฒญ์ ํ ํฐ ๊ฐ์ด ์ค๋ ค์ค๋ฉด, JWT์ header์ payload๊ฐ์ ์๋ฒ์ธก์ ๊ฐ์ถฐ๋ secret key์ ํจ๊ป ๋๋ ค์
๊ณ์ฐ๋ ๊ฒฐ๊ด๊ฐ์ด Signature ๊ฐ๊ณผ ์ผ์นํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํ๋ค.( JWT ์ ํจ์ฑ ๊ฒ์ฌ )
6) ์๋ช ๊ฐ๊ณผ ๊ณ์ฐ ๊ฐ์ด ์ผ์นํ๊ณ , ์ ํจ๊ธฐ๊ฐ๋ ์ง๋์ง ์์๋ค๋ฉด ํด๋น ์ฌ์ฉ์๋ ์ดํ ๋ชจ๋ ์์ฒญ์ ๋ํด ๋ก๊ทธ์ธ๋ ํ์์ผ๋ก ๊ถํ์ ์ธ๊ฐ(Authorization)ํ๋ค.
JWT๋ ์๋ฒ ์ธก์์ ํ ํฐ์ ์ถ์ ํ๋ ๊ฒ ์๋๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌํ ์ ์์ผ๋, ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํต์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด ํด์ปค๊ฐ ํ ํฐ์ ํ์ทจํ๋ค๋ฉด, ํด์ปค๊ฐ ๊ฐ์ง ํ ํฐ์ ๋ฌดํจํํ ๋ฐฉ๋ฒ์ด ์๋ค.
๊ทธ๋์ ๋ณดํต ํ ํฐ์ ์๋ช ์ 30๋ถ ์ ๋๋ก ์งง๊ฒ ์ก๋๋ค.
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด 2๊ฐ์ ํ ํฐ์ ์ค๋ค.
1) ์๋ช ์ด ๋ช ์๊ฐ ๋๋ ๋ช ๋ถ๋จ์๋ก ์งง์ access ํ ํฐ.
2) ์ข ๋ ๊ธด ์๋ช ์ ๊ฐ์ง๊ณ ์๋ ( ๋ณดํต 2์ฃผ๊ฐ๋ ) refresh ํ ํฐ.
์ด 2๊ฐ์ ํ ํฐ์ ์๋น์ค์ ๋ง๊ฒ ์ ํ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ง์ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๋ฉด ๋๋ค.
Session & Cookie VS JWT
์ด์ ์ด ํฌ์คํ ์ ์ฃผ์ ์ธ ์ธ์ ๊ณผ ์ฟ ํค ๋ฐฉ์ VS JWT ๋ฐฉ์์ ๋น๊ตํด๋ณด์ -!
Session-Based Authentication ์ฅ์
์ธ์ ์ ์ด์ฉํ๋ฉด ์๋ฒ ์ธก์ ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ ๊ด๋ฆฌ์ ์ฉ์ดํ๊ณ ,
stateful ํ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋ค. (๊ฐ์ ๋ก๊ทธ์์ ๊ธฐ๋ฅ, ๋ก๊ทธ์ธ๋ ๋ชจ๋ ๋๋ฐ์ด์ค ์ ๋ณด ํ์ธ ๊ธฐ๋ฅ, ์ ์ ์ธ์ ์ ํ ๊ธฐ๋ฅ(๋ทํ).. ๋ฑ๋ฑ)
Session-Based Authentication ๋จ์
์๋ฒ ์ธก์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ์ ์ฅ๋ผ ์๊ณ , ์ธ์ DB๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ํธ๋ํฝ์ด ๋ง์์ง๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ๋ ํ์ํ๊ฒ ๋๋ค.
Token-Based Authentication ์ฅ์
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ณ๋์ DB ์์ด ๋ก๊ทธ์ธ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
์์ฑ๋ ํ ํฐ์ ์ถ์ ํ์ง ์๊ณ ์๋ฒ๊ฐ ์๋ ๊ฒ์ ํ ํฐ์ ์ ํจ์ฑ ์ฌ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถ๋ด์ด ์ ๋ค.
Token-Based Authentication ๋จ์
๋ก๊ทธ์ธ๋ ์ฌ์ฉ์๋ฅผ ํต์ ํ๊ธฐ ์ด๋ ต๊ณ , ํ ํฐ์ด ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง๋ ์ ํจํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋ก๊ทธ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ณ ,
ํด์ปค๊ฐ ํ ํฐ์ ํ์ทจํ์ ๋ ํด๋น ํ ํฐ์ ๋ฌดํจํ์ํฌ ์ฆ๊ฐ์ ์ธ ๋์์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ฐธ๊ณ ๋ฐ ์ถ์ฒ
์์ฝ Session VS Token Youtube
Nomad Coders์ Differences Between Cookis, Sessions and Tokens Youtube
Session ๊ธฐ๋ฐ ์ธ์ฆ๊ณผ Token ๊ธฐ๋ฐ ์ธ์ฆ ์ฐธ๊ณ ๋ธ๋ก๊ทธ
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ WEB ] HTTP Header(ํค๋) - 1 (0) | 2022.12.18 |
---|---|
[ WEB ] Cookie์ ๋ํ ์ ๋ฆฌ ๊ธ (0) | 2022.11.27 |
[ WEB ] Web Storage์ ๋ํด ์์๋ณด๊ธฐ. (0) | 2022.09.04 |
[ HTTP ] HTTP์ ๋ํด ์์๋ณด๊ธฐ (0) | 2022.08.07 |
[ Internet / ๋์์๋ฆฌ ] MDN - ์ธํฐ๋ท์ ๊ธฐ๋ณธ ๋์ ์๋ฆฌ์ ๋ํ์ฌ (0) | 2021.12.23 |