-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Cookie / Session / Token ์ธ์ฆ ๋ฐฉ์ ์ข ๋ฅ
- ๋ณดํต ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ํ์ธํ๋ ๋ฐฉ์์ ์ฟ ํค, ์ธ์ , ํ ํฐ 3๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
๐ช Cookie ์ธ์ฆ
์ฟ ํค๋ Key-Value ํ์์ ๋ฌธ์์ด ๋ฉ์ด๋ฆฌ์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ ํ ์น ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ, ๊ทธ ์ฌ์ดํธ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์๋ฒ๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ์ค์น๋๋ ์์ ๊ธฐ๋ก์ ๋ณด ํ์ผ์ด๋ค. ๊ฐ ์ฌ์ฉ์๋ง๋ค์ ๋ธ๋ผ์ฐ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์ ๋ณด ์๋ณ์ด ๊ฐ๋ฅํ๋ค.
๐ช Cookie ์ธ์ฆ ๋ฐฉ์
- ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ)๊ฐ ์๋ฒ์ ์์ฒญ(์ ์)์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์๋ต์ ์์ฑํ ๋, ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅํ๊ณ ์ถ์ ์ ๋ณด๋ฅผ ์๋ต ํค๋์ Set-Cookie์ ๋ด๋๋ค.
- ์ดํ ํด๋น ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค, ๋งค๋ฒ ์ ์ฅ๋ ์ฟ ํค๋ฅผ ์์ฒญ ํค๋์ Cookie์ ๋ด์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ์ฟ ํค์ ๋ด๊ธด ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํด๋น ์์ฒญ์ ํด๋ผ์ด์ธํธ๊ฐ ๋๊ตฐ์ง ์๋ณํ๊ฑฐ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ถ์ฒ ๊ด๊ณ ๋ฅผ ๋์ฐ๊ฑฐ๋ ํ๋ค.
๐ช Cookie ๋ฐฉ์์ ๋จ์
- ๊ฐ์ฅ ํฐ ๋จ์ ์์ ๋ณด์์ ์ทจ์ฝํ๋ค. ์์ฒญ์ ์ฟ ํค์ ๊ฐ์ ๊ทธ๋๋ก ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ์ ์ถ ๋ฐ ์กฐ์ ๋นํ ์ํ์ด ์กด์ฌํ๋ค.
- ์ฟ ํค์๋ ์ฉ๋์ ํ์ด ์์ด ๋ง์ ์ ๋ณด๋ฅผ ๋ด์ ์ ์๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ฟ ํค์ ๋ํ ์ง์ ํํ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณต์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
- ์ฟ ํค์ ์ฌ์ด์ฆ๊ฐ ์ปค์ง์๋ก ๋คํธ์ํฌ์ ๋ถํ๊ฐ ์ฌํด์ง๋ค.
๐ Session์ธ์ฆ
์ด๋ฌํ ๋ณด์์ ์ธ ์ด์ ๋๋ฌธ์, ์ธ์ ์ ๋น๋ฐ๋ฒํธ ๋ฑ ํด๋ผ์ด์ธํธ์ ๋ฏผ๊ฐํ ์ธ์ฆ์ ๋ณด๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์๋ฒ ์ธก์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ค. ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ธฐ๋ ํ๊ณ , ์๋ฒ์ ๋ก์ปฌ ํ์ผ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ธฐ๋ ํ๋ค. ๋ฏผ๊ฐํ ์ ๋ณด๋ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด์ง ์๊ณ ์๋ฒ์์ ๋ชจ๋ ๊ด๋ฆฌํ๋ค.
๐ Session ์ธ์ฆ ๋ฐฉ์
- ์ ์ ๊ฐ ์น์ฌ์ดํธ์์ ๋ก๊ทธ์ธํ๋ฉด ์ธ์ ์ด ์๋ฒ ๋ฉ๋ชจ๋ฆฌ(ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค) ์์ ์ ์ฅ๋๋ค. ์ด ๋, ์ธ์ ์ ์๋ณํ๊ธฐ ์ํ Session id๋ฅผ ์ ์ฅํ๋ค.
- ์๋ฒ์์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค๊ฐ์๋ค๊ฐ Session id๋ฅผ ์ ์ฅํ๋.
- ์ฟ ํค์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ด ใ ๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๋ ํด๋น ์ฌ์ดํธ์ ๋ํ ๋ชจ๋ Request์ Session id๋ฅผ ์ฟ ํค์ ๋ด์ ์ ์กํ๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ Session id์ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ฆฌํ๊ณ ์๋ Session id๋ฅผ ๋น๊ตํ์ฌ ์ธ์ฆ์ ์ํํ๋ค.
๐ Session ๊ฐ์ฒด๋ ์ด๋ค ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์๊น?
- ์ธ์ ๊ฐ์ฒด๋ Key์ ํด๋นํ๋ Session ID์ ์ด์ ๋์ํ๋ Value๋ก ๊ตฌ์ฑ๋์ด ์๋ค. value์๋ ์ธ์ ์์ฑ ์๊ฐ, ๋ง์ง๋ง ์ ๊ทผ ์๊ฐ ๋ฐ User๊ฐ ์ ์ฅํ ์์ฑ ๋ฑ์ด Map ํํ๋ก ์ ์ฅ๋๋ค.
๐ Session ๋ฐฉ์์ ๋จ์
- ์ฟ ํค๋ฅผ ํฌํจํ ์์ฒญ์ด ์ธ๋ถ์ ๋ ธ์ถ๋๋๋ผ๋ ์ธ์ ID ์์ฒด๋ ์ ์๋ฏธํ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ง ์๋๋ค.
- ๊ทธ๋ ํด์ปค๊ฐ Session ID ์์ฒด๋ฅผ ํ์ทจํ์ฌ ํด๋ผ์ด์ธํธ์ธ์ฒ ์์ฅํ ์ ์๋ค๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
- ์๋ฒ์์ Session ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์์ฒญ์ด ๋ง์์ง๋ฉด ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฐ๋ค.
๐ Token ์ธ์ฆ
ํ ํฐ๊ธฐ๋ฐ ์ธ์ฆ์์คํ
์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์์ ํ๋ฉด ์๋ฒ์์ ํด๋น ํด๋ผ์ด์ธํธ์๊ฒ ์ธ์ฆ๋์๋ค๋ ์๋ฏธ๋ก 'ํ ํฐ'์ ๋ถ์ฌํ๋ค. ์ด ํ ํฐ์ ์ ์ผํ๋ฉฐ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ํด๋ผ์ด์ธํธ๋ ๋ ๋ค์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์์ฒญ ํค๋์ ํ ํฐ์ ์ฌ์ด์ ๋ณด๋ธ๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ์์๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ํ ํฐ์ ์๋ฒ์์ ์ ๊ณตํ ํ ํฐ๊ณผ์ ์ผ์น ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์ฌ ์ธ์ฆ๊ณผ์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
๊ธฐ์กด์ Session ์ธ์ฆ์ ์๋ฒ๊ฐ ํ์ผ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ์
์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๊ณ ์ด๋ฅผ ์กฐํํ๋ ๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค. ํ์ง๋ง ํ ํฐ์ ์ธ์
๊ณผ๋ ๋ฌ๋ฆฌ ์๋ฒ๊ฐ ์๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ ์คํ ๋ฆฌ์ง ๋ฑ์ ํตํด ์ธ์
์ ๊ด๋ฆฌํ๋ ์๋ฒ์ ๋ถ๋ด์ ๋ ์ ์๋ค. ํ ํฐ ์์ฒด์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ ์์กฐ๋์๋์ง ํ๋ณ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
ํ ํฐ์ ์ฑ๊ณผ ์๋ฒ๊ฐ ํต์ ๋ฐ ์ธ์ฆํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค. ์๋ํ๋ฉด ์น์๋ ์ฟ ํค์ ์ธ์
์ ์์ง๋ง ์ฑ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ์๋ฒ๊ธฐ๋ฐ vs ํ ํฐ ๊ธฐ๋ฐ
์๋ฒ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ (Session)
- ์๋ฒ์ ์ธ์ ์ ์ฌ์ฉํด ์ฌ์ฉ์ ์ธ์ฆ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์๋ฒ์ธก์์ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋ฌ๋ค๋ณด๋, ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ฒ์ํด์ ์ ์งํด๋๊ณ ์ฌ์ฉํ๋ค. ์ด๋ ์ฌ์ฉ์์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ฑ๋ฅ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ผ๋ ํ์ฅ์ฑ์ด ์ด๋ ต๋ค๋ ๋จ์ ์ ์ง๋๋ค.
ํ ํฐ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ (Token)
- ์ด๋ฌํ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ํ ํฐ๊ธฐ๋ฐ ์ธ์ฆ์์คํ ์ด ๋ํ๋ฌ๋ค.
- ์ธ์ฆ๋ฐ์ ์ฌ์ฉ์์๊ฒ ํ ํฐ์ ๋ฐ๊ธํ๊ณ , ๋ก๊ทธ์ธ์ด ํ์ํ ์์ ์ผ ๊ฒฝ์ฐ ํค๋์ ํ ํฐ์ ํจ๊ป ๋ณด๋ด ์ธ์ฆ๋ฐ์ ์ฌ์ฉ์์ธ์ง ํ์ธํ๋ค.
- ์ด๋ ์๋ฒ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ๊ณผ ๋ฌ๋ฆฌ ์ํ๋ฅผ ์ ์งํ์ง ์์ผ๋ฏ๋ก Statelessํ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
๐ Token ์ธ์ฆ ๋ฐฉ์
- ์ฌ์ฉ์๊ฐ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธ์ ํ๋ค.
- ์๋ฒ์ธก์์ ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ)์๊ฒ ์ ์ผํ ํ ํฐ์ ๋ฐ๊ธํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ธก์์ ์ ๋ฌ๋ฐ์ ํ ํฐ์ Cookie or localStroage์ ์ ์ฅํด ๋๊ณ , ์๋ฒ์ ์์ฒญ์ ํ ๋๋ง๋ค ํด๋น ํ ํฐ์ HTTP ์์ฒญ ํค๋์ ํฌํจ์์ผ ์ ๋ฌํ๋ค.
- ์๋ฒ๋ ์ ๋ฌ๋ฐ์ ํ ํฐ์ ๊ฒ์ฆํ๊ณ ์์ฒญ์ ์๋ตํ๋ค. ํ ํฐ์๋ ์์ฒญํ ์ฌ๋์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๊ธฐ์ ์๋ฒ๋ DB๋ฅผ ์กฐํํ์ง ์๊ณ ๋๊ฐ ์์ฒญํ๋์ง ์ ์ ์๋ค.
๐ Token ๋ฐฉ์์ ๋จ์
- Cookie/Session๊ณผ ๋ค๋ฅด๊ฒ ํ ํฐ ์์ฒด์ ๋ฐ์ดํฐ ๊ธธ์ด๊ฐ ๊ธธ์ด, ์ธ์ฆ ์์ฒญ์ด ๋ง์์ง ์๋ก ๋คํธ์ํฌ ๊ณผ๋ถํ๊ฐ ์ฌํด์ง ์ ์๋ค.
- Payload ์์ฒด๋ ์ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ ์ ์ค์ํ ์ ๋ณด๋ ๋ด์ ์ ์๋ค.
- ํ ํฐ์ ํ์ทจ๋นํ๋ฉด ๋์ฒดํ๊ธฐ ์ด๋ ต๋ค. (๋ฐ๋ผ์ ์ฌ์ฉ ๊ธฐ๊ฐ ์ ํ์ ์ค์ ํ๋ ์์ผ๋ก ๊ทน๋ณตํ๋ค. )