1. Token ์ธ์ฆ ๋ฐฉ์์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด ์ง๋๊ฐ
ํ์์ด ๋ก๊ทธ์ธ์ ์๋ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
โ Client๊ฐ ID/PW ๋ก๊ทธ์ธ ์ฐฝ์ ์จ์ ์ ์ถํ๋ค.
โ Server๊ฐ DB๋ฅผ ํตํด ํด๋น ID/PW๋ฅผ ๊ฐ์ง ํ์์ด ์๋์ง ํ์ธํ๋ค.
์ฌ๊ธฐ์ ํด๋น ํ์์ ์ ๋ณด๊ฐ ์ฐ๋ฆฌ DB์ ์์ด์ ์ฐ๋ฆฌ ํ์์ธ ๊ฒ์ด ํ์ธ ๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
โ Server์์ ํด๋น ํ์์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ณ ์ ํ Token์ ๋ง๋ ๋ค.
โ ๊ทธ๋ฆฌ๊ณ ํด๋น ํ ํฐ์ ์๊น ์ ํจํ ์์ฒญ์ ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ค๋ค.
โ ์ด์ ํด๋ผ์ด์ธํธ๋ ์ธ์ฆ์ด ํ์ํ API๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ํด๋น Token์ ์์ฒญ Header์ ๋๋ดํ์ฌ ๊ฐ์ด ๋ณด๋ธ๋ค.
โ ์ด์ ์๋ฒ์์๋ ํด๋น Token์ ์ ํจ์ฑ์ ๊ฒ์ฆ ํ ์ ํจํ ํ ํฐ์ด ๋ง๋ค๋ฉด ์๋ต์ผ๋ก ์์ฒญํ ๋ด์ฉ์ ๋ํ ์ ์ ๋ต๋ณ์ ๋ณด๋ด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ธฐ์กด์ Session ๋ฐฉ์๊ณผ๋ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ?
์ธ์
๋ฐฉ์์ ๊ฒฝ์ฐ ์๋ฒ๋ผ๋ ๊ณต๋ฌด์์ด ๊ฐ์ธ ์ฌ์
์ ๋ช
๋ถ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํํ์ ๊ฐ๋ค. ๊ฐ์ธ ์ฌ์
์๊ฐ ์์ ์ ํ๊ฐ์ฆ์ ๋ค๊ณ ๋์ฌ๋ฌด์์ ์ฐพ์์์ ๋ญ๊ฐ ์ ๋ณด๋ฅผ ์ป์ด๊ฐ๋ค๊ณ ํด๋ณด์. ๊ทธ๋ฌ๋ฉด ์ฐฝ๊ตฌ์ ์ง์์ ์ฌ์
์ ๋ช
๋ถ๋ผ๋ ๋๊บผ์ด ์ฑ
์ ์ผ์ผํ ๋ค์ ธ๊ฐ๋ฉฐ ํด๋น ์์ฒญ์๊ฐ ์ง์ง ํ๊ฐ๋ฅผ ๋ฐ์ ๊ฐ์ธ ์ฌ์
์๊ฐ ๋ง๋์ง ํ์ธํด์ผํ๋ค.
๋ง์ฝ ์ด๋ ๊ฒ ๋์ฌ๋ฌด์์ ์ฐพ์์ค๋ ๊ฐ์ธ ์ฌ์
์๊ฐ ๋ง๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๋์ฌ๋ฌด์๋ฅผ ๊ฐ๋์ฑ์์ ๋ถ๋ง์ ํฐํธ๋ฆด ๊ฒ์ด๋ค. ์๋ํ๋ฉด ํด๋น ์ผ์ ์ฒ๋ฆฌํ๋ ๊ณต๋ฌด์์ด ํ ๋ช
์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ธ์
๋ฐฉ์ ๋ํ ๋๊ฐ์ด ์ฐ๋ฆฌ ํ์์ Session ์ ๋ณด๋ฅผ ์๋ฒ์์ ๊ณ์ ์ ์งํ๊ณ ์์ด์ผ ํ๋ฏ๋ก(Stateful), ์ธ์ฆ ์์ฒญ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ์ ํ๋๋ค.
๋ฐ๋ฉด Token ์ธ์ฆ ๋ฐฉ์์ ๊ฒฝ์ฐ ์ธ์ฆ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๋ถ์ฐํด์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํ๋ค๊ณ ํด์ ์ฑ๋ฅ์ด ์ ํ๋์ง ์๋๋ค. (stateless) ์๋ฒ๋ ๊ทธ์ ํ ํฐ ์ ๋ณด์ ์ ํจ์ฑ๋ง ํ์ธํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ํ ์ธ์ฆ ์์ฒญ์ด ์ ํจํ๋ค๋ฉด DB๋ก ๋ค์ด๊ฐ์ ํ์ํ ์ ๋ณด๋ฅผ ๊บผ๋ด์ ์ฃผ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์ฌ๊ธฐ์ Token ์ธ์ฆ ๋ฐฉ์์ผ๋ก JWT๋ฅผ ์ด๋ค๋ฉด DB๊น์ง ๊ฐ๋ ํ์๊ฐ ํ์ ํ๊ฒ ์ค๋ค. ์๋ํ๋ฉด Token ์์ฒด์ ์ฌ์ฉ์์ ๋ํ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด์ ๊ฐ๋จํ ์์ฒญ์ ๊ฒฝ์ฐ, Token์์ ๊บผ๋ด์ ์ฐ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค์์๋ JWT๋ฅผ ์ด์ฉํ Token ์ธ์ฆ ๋ฐฉ์์ ๋ํด ๊ณต๋ถํด๋ณด๊ฒ ๋ค.