JWT๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ณ ์๋ณํ๊ธฐ ์ํ ํ ํฐ์ ํ ์ข
๋ฅ์
๋๋ค.
๋ณดํต ์ธ์
์ด๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๊ธฐ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ ฅํ ์ธ์ฆ ์๋จ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
- ์ฟ ํค๋ ๋ ธ์ถ, ์กฐ์ ๋ฑ ๋ณด์์ ์ทจ์ฝํ๊ณ ๋๋ฉ์ธ ๋ฑ์ด ๋ฌ๋ผ์ง ๊ฒฝ์ฐ ๊ณต์ ๊ฐ ํ๋ค์ด์ง๋๋ค.
- ์ธ์ ์ ์๋ฒ์ ๋ณ๋๋ก ์ ๋ณด๋ฅผ ์ ์ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋ฆฌ์์ค๊ฐ ๋ค์ด๊ฐ๊ณ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
JWT์ ํน์ง
- JSON ๊ตฌ์กฐ, ์ฆ key-value ํํ๋ฅผ ๊ฐ์ง๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค.
- ๊ฐ๊ฐ์ ์์ฒญ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํฉ๋๋ค.
- ์ด๋ก ์ธํด ํ์ฅ์ฑ ๋ฉด์์ ์ด์ ์ ๊ฐ์ ธ๊ฐ๋๋ค.
JWT ํ๋ฆ๋
JWT๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ ์ํฉ์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ๋ค๋ฆ
๋๋ค.
ํ์ง๋ง ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์ง๊ธ๊น์ง ๋ณด์๋ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋จํ ํ๋ฆ๋๋ฅผ ๊ทธ๋ ค ๋ณด์์ต๋๋ค.
(์ฐธ๊ณ ๋ง ๋ถํ๋๋ฆฝ๋๋ค)
JWT์ ๋จ์
- ํ ํฐ์ ๊ธธ์ด๊ฐ ์๋์ ์ผ๋ก ๊ธธ์ด, ๋คํธ์ํฌ์ ๋ถํ๋ฅผ ์ค ์ ์์ต๋๋ค.
- JWT์ ๋ค์ด๊ฐ๋ ๋ด์ฉ ๋ถ๋ถ์ Payload๋ผ๊ณ ํ๋๋ฐ, ์ด ๋ถ๋ถ์ ๋๊ตฌ๋ ์ด๋ ๊ฐ๋ฅํ๊ณ ๋ณ๋๋ก ์ํธํ๋์ง ์์ต๋๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฏผ๊ฐ ์ ๋ณด๋ ๋ด์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ์์ JWT๋ฅผ ์ ์ดํ์ง ์๊ธฐ ๋๋ฌธ์, ํ ํฐ์ด ํ์ทจ๋์์ ๋ ๋์ฒ๊ฐ ์ด๋ ต์ต๋๋ค.
๊ทธ ์ธ
- Access token์ด ํ์ทจ๋์์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ, ์ ํจ๊ธฐ๊ฐ์ ์งง๊ฒ ์์ฑํฉ๋๋ค.
- Refresh token์ด ํ์ทจ๋์์ ๊ฒฝ์ฐ๋ ๋๋นํด์ผ ํ๋๋ฐ, ํฌ๊ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ์๋ฒ์ ๋ธ๋๋ฆฌ์คํธ๋ฅผ ๋์ด ํ ํฐ ์ฌ์ฉ์ ๋ง์ต๋๋ค. (ํ๋ฆ๋์ฒ๋ผ)
- ํ ํฐ์ ์ฌ๋ฐ๊ธํ ๋ Refresh token๋ ๊ฐ์ด ๋ฐ๊ธํ๊ณ , ์ ํจ๊ธฐ๊ฐ์ Access token์ฒ๋ผ ์งง๊ฒ ์ค์ ํ๊ฑฐ๋ ์ฌ์ฌ์ฉ์ ๋ง์ต๋๋ค. ์ด๋ฅผ Refresh token rotation์ด๋ผ๊ณ ํฉ๋๋ค.
- Supabase ๋ฑ ์ผ๋ถ ์๋น์ค์์๋ JWT์ ๊ถํ ๋ฑ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ฐํํ๊ธฐ๋ ํฉ๋๋ค.
์ด๊ฒ์ ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ฐ, ๋ณดํต์ ์ต์ํ์ ์ ๋ณด๋ง ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
(์ ๋ ๊ฐ๊ธ์ ์ฌ์ฉ์ ID ์ ๋๋ง ์ ์ฅํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค.)