JWT
Last updated
Last updated
์น ๋ฐ ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์ ์ค ํ๋
SON ํํ๋ก ์ธ์ฝ๋ฉ๋ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ ๋ฌธ์์ด๋ก, ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ์๊ฒ ์์ ์ ์ ์์ ์ฆ๋ช ํ๊ณ ๋ณด์ ๊ถํ์ ์ป์ ์ ์์
URL-safe : base24url ์ธ์ฝ๋ฉ ์ฌ์ฉ. URL๋ก ์ด์ฉํ ์ ์๋ ๋ฌธ์๋ก๋ง ๊ตฌ์ฑ๋จ
์น ์๋ฒ๋ stateless ๋ก ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์, ์์ฒญ์ ๋ฐ์์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋๊ตฌ์ธ์ง ์ ์ ์์.
๋งค ์์ฒญ๋ง๋ค ID, PW๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ผ๋, ์ต์ด ์ ์์์๋ง ID,PW๋ฅผ ๋ฐ์ ์ธ์ฆ์ ํ๊ณ JWT๋ฅผ ๋ฐ๊ธํ์ฌ ํด๋ผ์ด์ธํธํํ ์ ๊ณตํจ.
์ดํ ํด๋ผ์ด์ธํธ๋ ์์ฒญํ ๋๋ง๋ค JWT๋ฅผ ํฌํจํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ , ์๋ฒ๋ JWT๋ก ํด๋ผ์ด์ธํธ๋ฅผ ํน์ ํ๊ณ ํ์ธํจ.
Header : JWT ํ ํฐ์ ์ ํ๊ณผ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจ
payload : ํ ํฐ์ ๋ด์ ํด๋ ์(claim) ์ ๋ณด๋ฅผ ํฌํจ. ์ด๋ ์ค์ ๋ก ์ ์กํ๋ ค๋ ์ ๋ณด๋ฅผ ํฌํจํ๋ฉฐ, ํด๋ผ์ด์ธํธ ์๋ณ ์ ๋ณด, ๋ง๋ฃ์๊ฐ ๋ฑ์ด ํฌํจ๋จ. name-value์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ฌ๋ฌ๊ฐ์ ํด๋ ์์ ๋ฃ์ ์ ์์
signature : secret key๋ฅผ ํฌํจํ์ฌ ์ํธํ ๋์ด์์. ํ ํฐ์ด ์ ํจํ์ง ๋ณ์กฐ๋์ง ์์๋์ง ํ์ธํจ
Stateless: ์๋ฒ ์ชฝ์์ ์ํ๋ฅผ ์ ์งํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฒ ํ์ฅ์ฑ์ด ๋์์ง
Interoperability: JSON ํํ๋ก ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ ์ธ์ด ๋ฐ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅ
Extensibility: ํด๋ ์(claim)์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ํฌํจ์ํฌ ์ ์์ด์ ์ฌ์ฉ์ ๋ค์ํ ์ ์ ์ ๋ณด๋ฅผ ํฌํจ์ํฌ ์ ์์
Security: JWT๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํธํ๋์ด ์์ด์ ๋ฌด๋จ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์
REST ์๋น์ค๋ก ์ ๊ณต ๊ฐ๋ฅ
Payload Size: JWT๋ ์ ๋ณด๋ฅผ Base64๋ก ์ธ์ฝ๋ฉํ์ฌ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์ ๋ณด๊ฐ ์ปค์ง๋ฉด ์ ์ก ์๊ฐ๊ณผ ์ฉ๋์ ๋ํ ๋ถ๋ด์ด ์์ ์ ์์
Security: JWT๊ฐ ์์ ํ๊ฒ ์ ๋ฌ๋ ์ ์๋๋ก ์ํธํ๋์ด ์์ง๋ง, ์ํธํ๋์ง ์์ ๊ฒฝ์ฐ ํด๋ ๋ ๊ฐ๋ฅ์ฑ ์์. ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๊ธฐ์ ์๋ฒ์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์กฐ์ํด๋ ํ ํฐ์ ์ง์ ์ ์ฉํ ์ ์์
Revocation: JWT๋ ๋ฐ๊ธ ํ ๋ง๋ฃ ์๊ฐ์ด๋ ๊ถํ ์ทจ์ ๋ฑ์ ๊ฒฝ์ฐ์๋ ์๋ฒ์์ ์ง์ ์ฒ๋ฆฌํด์ผ ํจ. ์ฆ, JWT๋ฅผ ๊ฐ์ ๋ก ๋ง๋ฃ์ํค๋ ๊ฒ์ด ์ด๋ ค์
statless ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ ํฐ์ ๊ฑฐ์ ๋ชจ๋ ์์ฒญ์ ๋ํด ์ ์ก๋๋ฏ๋ก ๋ฐ์ดํฐ ํธ๋ํฝ ํฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์น ์์
JWS(JSON Web Signature) : JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ์๋ช ํ์ค
JWE(JSON Web Encryption) : JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ์ํธํ ๋ฐฉ๋ฒ