์ฐ์ ์ฐ๋ฆฌ๋ JWT ํ ํฐ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด JWTํ ํฐ ๋ฐฉ์์ ๋ํด ์์์ผ ํ๋ค.
๐ JWT
- JWT(JSON Web Token)๋ ์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ค์ ์ํธํ์ํจ JSON ํ ํฐ์ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๊ณ JWT๊ธฐ๋ฐ ์ธ์ฆ์ JWT ํ ํฐ(Access Token)์ HTTPํค๋์ ์ค์ด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ ๋ฐฉ์์ด๋ค.
- JWT JSON ๋ฐ์ดํฐ๋ฅผ Base64 URL -safe Encode๋ฅผ ํตํด ์ธ์ฝ๋ฉํ์ฌ ์ง๋ ฌํํ ๊ฒ์ด๋ฉฐ, ํ ํฐ ๋ด๋ถ์๋ ์๋ณ์กฐ ๋ฐฉ์ง๋ฅผ ์ํด ๊ฐ์ธํฌ๋ฅผ ํตํ ์ ์์๋ช
๋ ๋ค์ด์๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ JWT๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ฉด ์๋ฒ๋ ์๋ช
์ ๊ฒ์ฆํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ฉฐ ๊ฒ์ฆ์ด ์๋ฃ๋๋ฉด ์์ฒญํ ์๋ต์ ๋๋ ค์ค๋ค.
- Base64 URL -safe Encode๋ ์ผ๋ฐ์ ์ธ Base64 Encode์์ URL์์ ์ค๋ฅ์์ด ์ฌ์ฉํ๋๋ก +, /๋ฅผ ๊ฐ๊ฐ -, _ ๋ก ํํํ ๊ฒ์ด๋ค.
๐JWT ๊ตฌ์กฐ
JWT๋ .์ ๊ตฌ๋ถ์๋ก ๋๋์ด์ง๋ ์ธ ๊ฐ์ง ๋ฌธ์์ด์ ์กฐํฉ์ด๋ค.
.์ ๊ธฐ์ค์ผ๋ก ์ข์ธก๋ถํฐ Header, Payload, Signature์ ์๋ฏธํ๋ค.

Header์๋ JWT์์ ์ฌ์ฉํ ํ์
๊ณผ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ข
๋ฅ๊ฐ ๋ด๊ฒจ ์์ผ๋ฉฐ, Payload๋ ์๋ฒ์์ ์ฒจ๋ถํ ์ฌ์ฉ์ ๊ถํ ์ ๋ณด์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์๋ค. Signature์๋ Header, Payload๋ฅผ Base64 URL -safe Encode๋ฅผ ํ ์ดํ Header์ ๋ช
์๋ ํด์ํจ์๋ฅผ ์ ์ฉํ๊ณ , ๊ฐ์ธํค(Private Key)๋ก ์๋ช
ํ ์ ์์๋ช
์ด ๋ด๊ฒจ ์๋ค.
๐ JWT ์ธ์ฆ๊ณผ์
- ์ฌ์ฉ์๊ฐ ID, PW๋ฅผ ์
๋ ฅํ์ฌ ์๋ฒ์ ๋ก๊ทธ์ธ ์ธ์ฆ์ ์์ฒญํ๋ค.
- ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ธ์ฆ์์ฒญ์ ๋ฐ์ผ๋ฉด, Header,. PayLoad, Signature๋ฅผ ์ ์ํ๋ค.
- Header, PayLoad, Signature๋ฅผ ๊ฐ๊ฐ Base64๋ก ํ ๋ฒ ๋ ์ํธํํ์ฌ JWT๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์ฟ ํค์ ๋ด์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ๊ธํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ JWT๋ฅผ localStorage ์ ์ฅํ๋ค. (์ฟ ํค๋ ๋ค๋ฅธ ๊ณณ์๋ ์ ์ฅ ๊ฐ๋ฅ ๋ณดํต localStorage์ ์ ์ฅ์ ํ๋ค. )
- API๋ฅผ ์๋ฒ์ ์์ฒญํ ๋ Authorization header์ AccessToken์ ๋ด์์ ๋ณด๋ธ๋ค.
- ์๋ฒ๊ฐ ํ ์ผ์ ํด๋ผ์ด๋ํธ๊ฐ Header์ ๋ด์์ ๋ณด๋ธ JWT๊ฐ ๋ด ์๋ฒ์์ ๋ฐํํ ํ ํฐ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ์ผ์ฐจํ๋ค๋ฉด ์ธ์ฆ์ ํต๊ณผ์์ผ์ฃผ๊ณ ์๋๋ผ๋ฉด ํต๊ณผ์ํค์ง ์์ผ๋ฉด ๋๋ค. ์ธ์ฆ์ด ํต๊ณผ๋์์ผ๋ฉด ํ์ด๋ก๋์ ๋ค์ด์๋ ์ ์ ์ ์ ๋ณด๋ค์ selectํด์ ํด๋ผ์ด์ธํธ์๊ฒ ๋๋ ค์ค๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๋๋ฐ, ๋ง์ผ AccessToken์ ์๊ฐ์ด ๋ง๋ฃ๋๋ฉด ํด๋ผ์ด์ธํธ๋ RefreshToken์ ์ด์ฉํด์ ์๋ฒ๋ก๋ถํฐ ์๋ก์ด ์์ธ์ค ํ ํฐ์ ๋ฐ๊ธ๋ฐ๋๋ค.
์ฐ์ ์ฐ๋ฆฌ๋ JWT ํ ํฐ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด JWTํ ํฐ ๋ฐฉ์์ ๋ํด ์์์ผ ํ๋ค.
๐ JWT
๐JWT ๊ตฌ์กฐ
JWT๋ .์ ๊ตฌ๋ถ์๋ก ๋๋์ด์ง๋ ์ธ ๊ฐ์ง ๋ฌธ์์ด์ ์กฐํฉ์ด๋ค.

.์ ๊ธฐ์ค์ผ๋ก ์ข์ธก๋ถํฐ Header, Payload, Signature์ ์๋ฏธํ๋ค.
Header์๋ JWT์์ ์ฌ์ฉํ ํ์ ๊ณผ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ข ๋ฅ๊ฐ ๋ด๊ฒจ ์์ผ๋ฉฐ, Payload๋ ์๋ฒ์์ ์ฒจ๋ถํ ์ฌ์ฉ์ ๊ถํ ์ ๋ณด์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์๋ค. Signature์๋ Header, Payload๋ฅผ Base64 URL -safe Encode๋ฅผ ํ ์ดํ Header์ ๋ช ์๋ ํด์ํจ์๋ฅผ ์ ์ฉํ๊ณ , ๊ฐ์ธํค(Private Key)๋ก ์๋ช ํ ์ ์์๋ช ์ด ๋ด๊ฒจ ์๋ค.
๐ JWT ์ธ์ฆ๊ณผ์