๐ฅ Http ํ๋กํ ์ฝ์์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ํต์ ์ด ๋๋์๋ง์ ์ํ์ ๋ณด๋ฅผ ์์ด๋ฒ๋ฆฐ๋ค (Stateless) ๋ฐ๋ผ์ ํต์ ์ ํ ๋๋ง๋ค, ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ์๊ตฌํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ฆ์ ํ๊ฒ๋๋ค.
๋ก๊ทธ์ธ์ ํตํด ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ถ์ฌํ๊ณ , ์ธ์ฆ์ ํตํด ์ฌ์ฉ์์ ๊ถํ์ ํ์ธํ๊ณ , ๋ฐ๋ณต๋๋ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ํผํ๊ฒ ๋๋ค.
์ธ์ฆ์ ์์ฃผ ์ฐ์ด๋ ์ธ์ ๊ณผ ํ ํฐ์ ๋น๊ตํ๋ค.
๐ข Session : ์ ์ ์ธ์ฆ ์ฑ๊ณต ์ดํ ์๋ฒ์ ์ธ์ ์ ์ฅ. ์ ์ฅ ํ response๋ฅผ ํตํด ์ ์ ์ ์ฟ ํค์ ์ธ์ ID ๊ฐ ์ ์ฅ๋๋๋ก ํ๋ค. ์ ์ ์ธก์์ http๋ฅผ ์์ฒญํ ๋์๋ Session id ๊ฐ ํฌํจ๋ ์ฟ ํค๊ฐ ํค๋์ ํฌํจ๋๋ฉฐ, ์๋ฒ๋ Session id ๋ฐ Session Storage์์์ ์ ๋ณด๋ฅผ ๋์กฐ ํ, ์ ์ ๋ฐ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์๋ณํ๋ค.
์ธ์ ์ ํด๋ผ์ด์ธํธ์ ๋ฐ๋ผ ๊ณ ์ ์ session ID๋ฅผ ๋ถ์ฌํ๋ค. ๋ฐ๋ผ์ ์๋ฒ๋ ์ธ์ ์์ด๋๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๋ค.
์ธ์ ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ฑฐ๋ ์๋ฒ์์ ์ธ์ ์ ์ญ์ ํ์ ๋ ์ญ์ ๊ฐ ๋๋ฏ๋ก, ์ฟ ํค๋ณด๋ค๋ ๋น๊ต์ ๋ณด์์ด ์ข๋ค.
๐ฆ ์ธ์ ๋ ์ฟ ํค(์ฟ ํค๋ ์ ์ฅ ๋ฉ์ปค๋์ฆ์ด๋ค.)๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง, ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค.
โป ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ PC์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ Session์ ์น ์๋ฒ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
์ฟ ํค๋ ์๋ฒ์ ์์์ ์ฐ์ง ์์ง๋ง, ์ธ์ ์ ์๋ฒ์ ์์์ ์ฌ์ฉํ๋ค.
์ฟ ํค?
์ฟ ํค๋ฅผ ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์ ์ฅํ๋ค๋ฉด, ๋ณ์ง ๋๋ request์์ ์ค๋ํ ๋นํ ์ฐ๋ ค๊ฐ ์๋ค.
ํ์ผ๋ก ์ ์ฅ๋๋ค๋ฉด, ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ฃํด๋ ์ ๋ณด๊ฐ ์ ์ง๋ ์ ์๋ค. ๋ฌผ๋ก ๋ง๋ฃ๊ธฐ๊ฐ์ ๋ฐ๋ก ์ง์ ํ ์ ์๋ค.
→ ๋ฐ๋ฉด์ ๋ก์ปฌ ์ ๋ณด๋ฅผ ์๋ฒ์ ์์ฒญํ๋ฏ๋ก ์ธ์ ( ์ ๋ณด๊ฐ ์๋ฒ ์ ์์ ) ์ ๋นํด ์์ฒญ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ ์ ํ ์ํฉ์๋ ์ฟ ํค๋ฅผ ์จ์ ์๋ฒ ๋ฆฌ์์ค๊ด๋ฆฌ์ ๋์์ด ๋ ์๋ ์๋ค.
๐ JWT : jason web token์ผ๋ก header, payload, signature๋ก ๊ตฌ์ฑ๋๋ค.
json ํ์์ ํ ํฐ์ผ๋ก payload์ ํค , value ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๋ง๋ฃ์๊ฐ๋ ์ง์ ๊ฐ๋ฅ ํ๋ฉฐ, HS256 ์๊ณ ๋ฆฌ์ฆ๊ณผ signature ํค๋ฅผ ์กฐํฉํด์ ๋ฌธ์์ด์ ๋ง๋ค์ด๋ธ๋ค.
๐คจ jwt์ ํต์ฌ์ ์ธ์ ๊ณผ ๋ฌ๋ฆฌ ์๋ฒ๊ฐ ์๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ์ด ๋๋ค๋ ์ ์ด๋ค.
ํด๋ผ์ด์ธํธ์ ์ ์ฅ์ด ๋๊ธฐ ๋๋ฌธ์, Session ๋ณด๋ค ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ๋ ์ฐ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ฅํ๋ค.
JWT๊ฐ ์ธ์ ๋ณด๋ค ์ ๋ฆฌํ ์ ์ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ๊ณต๊ฐ์ ํ๋ณด ํ ํ์๊ฐ ์๋ค๋ ์ ์ด๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ JWT๋ฅผ ๋ณด๊ดํ๊ณ ์๋ค๊ฐ, ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ๋๋ง๋ค ํค๋์ ํ ํฐ์ ์ค์ด์ ๋ณด๋ด๋ฉด ๋๋ค.
JWT ๋ ํค ๊ฐ์ ์ํ ์ธ์ฆ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก, Session๊ณผ ๋ฌ๋ฆฌ DB์์ ํต์ ์ ์๋ต ํ ์ ์๋ค.
- Session์ ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฐ API์ ์ฌ์ฉ ์, DB์ ์ปค๋ฅ์
์ ์ง์์ ์ผ๋ก ์๋ชจํ๊ฒ ๋๋ ๋จ์ ์ด ์๋๋ฐ, ๋ค์ ๋ฐฉ์๋ค๋ก ์ผ์ ๋ถ๋ถ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๊ธด ํ๋ค.
- File Storage ๋ฐฉ์
- ์๋ฒ์ ํน์ ๋๋ ํ ๋ฆฌ๋ก ํ์ผ ํ์์ผ๋ก ์ธ์ ์ด ์ ์ฅ ๋๋๋ฐ, ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํด์ผ ํ๋ ์ํฉ์์ ๋ฌธ์ ๋ฐ์. ๋จ์ผ ์๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์, ๋ก๋ ๋ฐธ๋ฐ์ฑ์์ ๊ธฐ์กด์ ์ธ์ ์ด ์ฌ์ฉํ๋ ์คํ ๋ฆฌ์ง๊ฐ ์๋ ์๋ฒ๋ก ์ธ์ ์ ํญ์ ๋๊ฒจ์ค์ผ ํ๋ค.
- In Memory ๋ฐฉ์
- ์๋ฒ๊ฐ ์ฃฝ๋ ๊ฒฝ์ฐ, ๋ก๊ทธ์ธ ์ ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ, → ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฐ์.
- ์ค์ผ์ผ ์์ ์ฒ๋ฆฌ
- DB๊ฐ ๋๋์ด์ ธ ์๊ณ , ์ฌ์ฉ์์ ์ ์์ด ์ด๋ ์ชฝ ์๋ฒ๋ก ์ฌ ์ง ๋ชจ๋ฅธ๋ค๋ฉด, Session์ ์ฌ์ฉํ๊ธฐ ์ํ ์ถ๊ฐ ๊ฐ๋ฐ ๋ฆฌ์์ค๊ฐ ๋ ๋ค์ด๊ฐ ์ ์๋ค.
- ์ด๋ ํน์ ์ธ์ ์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ ํน์ ์ธ์ ์์๋ง ํต์ ํ๋๋ก ํ๋ ์ถ๊ฐ์ ์ธ ๊ธฐ์ ์ด ํ์ ํ ์ ์๋ค.
- File Storage ๋ฐฉ์
๐ JWT ์ ๋จ์ :
- JWT ๋ ํ์ด๋ก๋์ ํฌ๊ธฐ๊ฐ ํด์๋ก ๋ฐ์ดํฐ ์ ์ก์ ๋น์ฉ์ด ์ปค์ง๋ค.
- ํ ํฐ์ด ํ์ทจ ๋นํ ๋ค๋ฉด ๋ง๋ฃ ๊ธฐ๊ฐ ๊น์ง ๋์ฒ๊ฐ ์๋๋ ์ํฉ์ด ๋ฐ์ ํ ์ ์๋ค. ( xss ๊ณต๊ฒฉ์ ์ทจ์ฝ)
- ๋๋ฌธ์ ๋ง๋ฃ์ผ์๋ฅผ ์งง๊ฒ ์ก์์ผ ํ๋ค.
๐ JWT๋ณด๋ค Session์ด๋ผ๋ฉด ?
- Session์ ๋ก๊ทธ์ธ ๋ ์ ์ ์ ์ ๋ณด๋ฅผ ๋ชจ๋ ์ ์ฅํ๊ณ ์์ด์, ์ ์ ์ ๋ํ ํต์ ๊ฐ JWT๋ณด๋ค ๋น๊ต์ ์ฝ๋ค.
- JWT๋ณด๋ค ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์๋ค๋ ์ฅ์ ๋ ์๋ค.
- ํ ํฐ์ด ํ์ทจ๋นํ ๊ฒฝ์ฐ ๋ง๋ฃ์๊น์ง ๋์ฒ๊ฐ ์๋๋ ์ํฉ๋ ๋ง์ ์ ์๋ค.
์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก JWT๋ฅผ ๋ ๋ง์ด ์ด๋ค.
Session์ ์ํ ์๋ฒ ์ค์ ์ด๋ ์ถ๊ฐ ๋ฆฌ์์ค ํฌ์ ๊ณผ JWT๋ฅผ ํตํด ์๋ ์์๋ ์์ ์ด๋์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ผ ๊ฒ์ด๋ค.
๋ฌผ๋ก JWT๊ฐ ๋ง๋ฅ์ด ์๋๋ค. JWT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ๋จ์ ๊ณผ ์์ ์ธ๊ธํ ๋ด์ฉ์ ์ธ์ ๋ ์ฅ์ ์ด๊ธฐ๋ง ํ์ง๋ ์๋ค.
์๋ชป๋ ๋ด์ฉ์ ์ง์ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค.
'SERVER' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Cloud Front] ํด๋ผ์ฐ๋ ํ๋ก ํธ ๋ฌดํจํ (1) | 2023.10.19 |
---|---|
[SERVER] docker command ( Oracle cloud, ubuntu 18 ) (0) | 2023.08.24 |
[SERVER] docker / centos 8 / oracle cloud (0) | 2022.12.03 |
[SERVER] GitLab CI CD / oracle cloud / docker (0) | 2022.12.02 |
iptables / centOS7 / ๋ฐฉํ๋ฒฝ ์ค์ / ๊ณต์ ๊ธฐ ํฌํธํฌ์๋ฉ ์ธํ (0) | 2022.04.24 |