JWT
JWT
์๋ฒ ๊ฐ๋ฐ์ ํ๋ฉด์ ๋ก๊ทธ์ธ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ผ๋ก 2๊ฐ์ง๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ๋๋ค.
- Cookie
- ์ฟ ํค๋ ํด๋ผ์ด์ธํธ ๋ก์ปฌ ์์ ์ฟ ํค๋ฅผ ์ ์ฅํ์ฌ ๋ก๊ทธ์ธ์ ์ ์งํ๋ ๋ฐฉ์์ด๋ค.
- ๋จ์ ์ผ๋ก ๋ก์ปฌ์์ ์กด์ฌํ๊ธฐ์ ๋ณด์์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Session
- ์ธ์ ์ ์ฟ ํค์ ๋ฐฉ์์ ์ด์ฉํ๋ฉฐ ์ฟ ํค๋ฅผ ๋ณด๋ด ์๋ฒ์์ ์ธ์ ์ ์์ฑํ์ฌ ์ฟ ํค์ ๋ด์ ๋ค์ ๋ณด๋ด์ฃผ๋ ๋ฐฉ์์ด๋ค.
- ๋ฆฌ์คํฐ์ ๋์ด์จ ์ฟ ํค์ ์ธ์ ์ ๋ด์ ์ธ์ ์ ์ ์งํ๋ ๋ฐฉ์์ด๋ค.
ํ์ง๋ง ์ด 2๊ฐ์ง์ ๋ฐฉ๋ฒ์ ๋ณด์์ ์ทจ์ฝํ๋ฉฐ ์ฌ๋ฌ๊ฐ์ ์๋ฒ๋ฅผ ํ์ฅํ์ฌ ์ฌ์ฉํ๊ธฐ์๋ ๊น๋ค๋ก์ด ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ต๊ทผ์๋ ์ด๋ฐํ ๋ฐฉ์์ ๋ณด์ํ JWT(JSON Web Token)์ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
JWT๋
- ํ ํฐ์ ๋ง๋ฃ์๊ฐ์ ์ฃผ์ด์ผํ๋ค.
- cors ๋ฌธ์ ์ ๋ํด์ ์์ ๋กญ๋ค.
- OAuth (์นด์นด์ค , ๋ค์ด๋ฒ , ํ์ด์ค๋ถ ๋ฑ api)
- JWT์ ๋จ์ ์ ์ธ์
๊ณผ ๋ค๋ฅด๊ฒ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ํต์ ํ ์๊ฐ ์๋ค.(์ด๋ฏธ ์ค ํ ํฐ์ ๋บ์ ์ ์๋ค)
- ํ ํฐ์ 2๊ฐ๋ฅผ ๋ฐ๊ธํ๋ค. (access ํ ํฐ๊ณผ refresh ํ ํฐ)
Access ํ ํฐ์ ์ ํจ์๊ฐ์ ์งง๊ฒ ๋์ด ํ์ทจ์ ์ฌ์ฉ์ ์ ํ์ ๋๋ค.
Refresh ํ ํฐ์ db์ ์ ์ฅํ์ฌ access ํ ํฐ์ด ๋ง๋ฃ์ refresh ํ ํฐ์ ๋น๊ตํ์ฌ access ํ ํฐ์ ๋ฐ๊ธํด์ค๋ค.
- ํ ํฐ์ 2๊ฐ๋ฅผ ๋ฐ๊ธํ๋ค. (access ํ ํฐ๊ณผ refresh ํ ํฐ)
๊ตฌ์กฐ
header
- ๋์ฝ๋ฉ์ 2๊ฐ์ง์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค type=โJWTโ ์ alg
-
alg๋ verify signature์ ์๋ช ๊ฐ์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฅ
HS256
HMAC -> ์ํฌ๋ฆฟํค๋ฅผ ํฌํจํ ์ํธํ ๋ฐฉ์
SHA256 -> ํด์ฌ
payload
- base64 ๋ก ๋์ฝ๋ฉ ์ json ํ์์ ์ ๋ณด๋ฅผ ์ถ๋ ฅ
- Clamis ๋ payload์ ๋ด๊ธด ์ ๋ณด ์ฌ์ฉ์ ์ ๋ณด๋ฑ ๋ฐ์ด์ปค๋ฅผ Claim์ด๋ผ ํ๋ค.
verify signature
- ํค๋์ , ํ์ด๋ก๋ , ์๋ฒ์ ๊ฐ์ถฐ๋์ ๋น๋ฐ ๊ฐ ์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฃ๊ณ ๋๋ฆฌ๋ฉด ์๋ช ๊ฐ์ ๋ฆฌํดํ๋ค.
-
HS256 ์ํธํ
HEADER + Payload + secret
Leave a comment