๐ ฐ ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ (Session / Cookie)
์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋ก๊ทธ์ธ ์ ์ธ์ ID๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ๊ธํด์ฃผ๊ณ ํด๋ผ์ด์ธํธ๋ ์์ฒญ ์๋ง๋ค ์ธ์ ID๊ฐ ๋ด๊ธด ์ฟ ํค๋ฅผ ํค๋์ ๋ด์ ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค. ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ฏ๋ก Statefulํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ธ์ฆ๋ฐฉ์
-
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์์์ ํ์ธํ๊ณ ๊ณ ์ ํ ์ธ์ ID ๊ฐ์ ์์ฑํ๋ค.
-
์์ฑ๋ ID ๊ฐ์ ์ธ์ ์ ์ฅ์์ ์ ์ฅ ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ๊ธํด์ค๋ค.
-
ํด๋ผ์ด์ธํธ๋ ์ธ์ ID๋ฅผ ๋ฐ์ ์ฟ ํค์ ์ ์ฅํ๊ณ , ์ธ์ฆ์ด ํ์ํ ์์ฒญ๋ง๋ค ์ฟ ํค์ ์ธ์ ID๋ฅผ ๋ด์ ํค๋์ ์ค์ด ๋ณด๋ธ๋ค.
-
์๋ฒ์์๋ ์ฟ ํค๋ฅผ ๋ฐ์ ์ธ์ ์ ์ฅ์์ ๋น๊ตํด ์ฌ๋ฐ๋ฅธ ์์ฒญ์ธ์ง ํ์ธํ๋ค.
-
์ธ์ฆ์ด ์๋ฃ๋๊ณ ์๋ฒ๋ ์์ฒญ์ ์๋ตํ๋ค.
์ฅ์
์ค์ํ ์ ๋ณด๋ ์๋ฒ์ ์๊ธฐ ๋๋ฌธ์ ์ฟ ํค ์์ฒด(์ธ์ ID)๋ ์ ์๋ฏธํ ๊ฐ์ ๊ฐ์ง๊ณ ์์ง ์๋ค.
๋จ์
-
์ฟ ํค๊ฐ ์์ฒด๊ฐ ์๋ฏธ๊ฐ ์๋ค๋ ๊ฒ์ ์์ ํด ๋ณด์ผ ์ ์์ผ๋, ํด์ปค๊ฐ ํ์น ์ฟ ํค๋ฅผ ์ด์ฉํด HTTP ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ์์๋ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ์์ฒญ์ธ์ง ์ ์ ์๋ค.(์ธ์ ํ์ด์ฌํน ๊ณต๊ฒฉ) โ ์ธ์ ์ ์ ํจ์๊ฐ์ ๋ฃ์ด์ค์ผ ํ๋ค. / B ๋ฐฉ์๋ ๋ง์ฐฌ๊ฐ์ง.
-
์ธ์ ์ ์ ์ฅํด์ผ ํ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ๋์ด๋ ๊ฒฝ์ฐ ์๋ฒ์ RAM์ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. ์ด๋ฅผ ํผํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ธฐ๋ ํ๋๋ฐ ์ด ์ญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ๋ฅผ ์ค ์ ์๋ค.
-
์์คํ ํ์ฅ์ด ์ด๋ ต๋ค. ๋จ์ํ ์ฌ์ ์ ๊ทธ๋ ์ด๋๊ฐ ์๋ ๋ ๋ง์ ํธ๋ํฝ์ ๊ฐ๋นํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋๋ฆฌ๊ฑฐ๋, ์ฌ๋ฌ ๋์ ์๋ฒ ์ปดํจํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๐ ฑ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ (JWT)
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋ก๊ทธ์ธ ์ ํ ํฐ์ ๋ฐ๊ธํด์ฃผ๊ณ , ์๋ฒ์ ์์ฒญ์ ํ ๋ HTTP ํค๋์ ํ ํฐ์ ํจ๊ป ๋ณด๋ด๋๋ก ํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋ ๋ฐฉ์์ด๋ค. ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ ์ด์ ์๋ฒ์ ์ ์ฅํ์ง ์๊ณ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก๋ง ์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก Stateless ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
JWT๋ Json Web Token์ ์ฝ์๋ก ์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ฅผ ์ํธํ์ํจ ํ ํฐ์ ๋ปํ๋ค.
์ธ์ /์ฟ ํค ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ํด๋ผ์ด์ธํธ๋ Access Token(JWT)์ HTTP ํค๋์ ์ค์ด ์๋ฒ๋ก ๋ณด๋ธ๋ค. A ๋ฐฉ์๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ์ธ์ ์ ์ฅ์์ ์ ์ ์ ์ ๋ณด๋ฅผ ๋ฃ๋ ๋ฐ๋ฉด์ B ๋ฐฉ์์ ํ ํฐ ์์ ์ ์ ์ ์ ๋ณด๋ฅผ ๋ฃ๋๋ค๋ ์ ์ด๋ค. ์๋ฒ ์ธก์์๋ ์ธ์ฆ์ ์ํด ์ํธํ๋ฅผ ํ๋๋, ๋ณ๋์ ์ ์ฅ์๋ฅผ ์ด์ฉํ๋๋ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.
์ธ์ฆ๋ฐฉ์
-
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์์์ ํ์ธํ๊ณ , ํด๋ผ์ด์ธํธ์๊ฒ Access Token(JWT)์ ๋ฐ๊ธํด์ค๋ค.
-
ํด๋ผ์ด์ธํธ๋ ์ ๋ฌ๋ฐ์ ํ ํฐ์ ์ ์ฅํด ๋๊ณ , ์ธ์ฆ์ด ํ์ํ ์์ฒญ๋ง๋ค ํ ํฐ์ HTTP ํค๋์ ๋ด์ ๋ณด๋ธ๋ค.
-
์๋ฒ์์๋ ์ํธํ๋ ํ ํฐ์ ๋ณตํธํ ํด ์ฌ๋ฐ๋ฅธ ์์ฒญ์ธ์ง ํ์ธํ๋ค.
-
์ธ์ฆ์ด ์๋ฃ๋๊ณ ์๋ฒ๋ ์์ฒญ์ ์๋ตํ๋ค.
์ฅ์
-
๊ฐํธํ๋ค. A ๋ฐฉ์์ ์ ์ฅ์์ ๊ด๋ฆฌ๊ฐ ํ์ํ์ง๋ง Access Token์ ๋ฐ๊ธํด์ค ํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๊ฒ์ฆ๋ง ํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ์ ์ฅ์๊ฐ ํ์ ์๋ค. ์ฆ Stateless ํ๋ค.
-
์ฟ ํค๋ฅผ ์ฌ์ฉํจ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด ์ฌ๋ผ์ง๋ค. ํ์ง๋ง, ํ ํฐ์ ์ฌ์ฉํ๋ ํ๊ฒฝ์์์ ์ทจ์ฝ์ ์ ๋๋นํด์ผ ํ๋ค.
-
ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ค. ํ ํฐ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ค๋ฅธ ์ธ์ฆ ์์คํ ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. Ex) facebook, Google..
๋จ์
-
์ด๋ฏธ ๋ฐ๊ธ๋ JWT๋ฅผ ๋์ดํฌ ์ ์๋ค. A ๋ฐฉ์์ฒ๋ผ ์ธ์ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ํด๋น ์ธ์ ์ด ์ ์์ ์ผ๋ก ์ฌ์ฉ๋ ๊ฒฝ์ฐ ์ง์๋ฒ๋ฆฌ๋ฉด ๋์ง๋ง, JWT๋ ํ ๋ฒ ๋ฐ๊ธ๋๋ฉด ์ ํจ๊ธฐ๊ฐ์ด ์๋ฃ๋ ๋ ๊น์ง๋ ๊ณ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ฆ ์ ํจ๊ธฐ๊ฐ์ด ์ง๋๊ธฐ ์ ๊น์ง ์ค์ปท ํธ๋ฆด ์ ์๋ค
-
JWT์ ๊ธธ์ด๊ฐ ๊ธธ๋ค. ์ธ์ฆ์ด ํ์ํ ์์ฒญ์ด ๋ง์์ง์๋ก ์๋ฒ์ ์์ ๋ญ๋น๊ฐ ๋ฐ์ํ๋ค.
๊ฒฐ๋ก
์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ ๊ณผ๊ฑฐ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ ๋์ฒดํ๊ธฐ ์ํ์ฌ ๋ฑ์ฅํ ๊ฒ์ด ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ด์ง๋ง ํ ํฐ์ ์ฌ์ฉํ๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด ํดํน์ ์ํ์์ ๋ฒ์ด๋ ๊ฒ์ด ์๋๋ค.
REFERENCE
์ฝ๊ฒ ์์๋ณด๋ ์๋ฒ ์ธ์ฆ 1ํธ - https://tansfil.tistory.com/58?category=255594
[JWT] ํ ํฐ(Token) ๊ธฐ๋ฐ ์ธ์ฆ์ ๋ํ ์๊ฐ - velopert.com/2350