JWT
Last updated
Last updated
JWT๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ HTTP Request Header์ ๋ฃ์ด ์ฃผ๋ JSON ํ ํฐ์ ๋งํ๋ค. ํ ํฐ์ ์ฌ์ฉํ์ฌ ์๋ฒ๋ ๋ณ๋์ ์ธ์ฆ ๊ณผ์ ์์ด ํ ํฐ ์ ๋ณด๋ง์ผ๋ก ์ธ์ฆ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค.
์ฟ ํค ๋๋ ์ธ์ ์ ํ์ทจํ์ฌ ๋ฐ์ํ๋ ๋ณด์ ์ด์๋ฅผ ๋ง์ ์ ์๋ค.
JWT๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์, Cross-Origin Resource Sharing (CORS) ์ด์๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
JWT๋ ๊ธฐ์กด์ XML๋ณด๋ค ๋ ๋ณต์กํ๊ณ ์ธ์ฝ๋ฉ ๋ ์ฌ์ด์ฆ๊ฐ ์๋ค.
HTTP์ HTML ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ์ข์ต๋๋ค.
์๋ฒ ํ์ฅ์, ํ ํฐ ์ ๋ณด๋ง ๊ณต์ ํ๋ฉด ์๋กญ๊ฒ ์ถ๊ฐ๋ ์๋ฒ์์๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ผ๋ ํ์ฅ์ฑ์ ์ฉ์ดํ๋ค.
ํ ํฐ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ค๋ฅธ ์ธ์ฆ ์์คํ ๊ณผ ์ํธ ํธํ์ด ๊ฐ๋ฅํ๋ค.
ํ ํฐ์ ํ์ํ ๋ณ๋์ ์ ์ฅ์ ๊ด๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์๋ค.
OAuth๋ Open Authorization, Open Authentication ๋ปํ๋ ๊ฒ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ (ํ์ด์ค๋ถ,๊ตฌ๊ธ,ํธ์ํฐ)(Service Provider)์ ์ ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ Third party์ฑ์ ์ ๊ณต ์์ด ์ธ์ฆ,์ธ๊ฐ๋ฅผ ํ ์ ์๋ ์คํ ์คํ ๋ค๋ ํ๋กํ ์ฝ์ด๋ค.
OAuth ์ธ์ฆ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ API๋ฅผ ์ ์ ๋์ ์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ์ป์ ์ ์๋ค. OAuth๊ฐ ์ฌ์ฉ ๋๊ธฐ ์ ์๋ ์ธ๋ถ ์ฌ์ดํธ์ ์ธ์ฆ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ํ ๋ ์ธ์ฆ ๋ฐฉ์์ ํ์ค์ด ์์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ๊ธฐ๋ณธ ์ธ์ฆ์ธ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ์๋๋ฐ, ์ด๋ ๋ณด์์ ์ทจ์ฝํ ๊ตฌ์กฐ ์๋ค. ์ ์ ์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ ธ์ถ๋ ๊ฐ๋ง์ฑ์ด ํฌ๊ธฐ ๋๋ฌธ์ด๋ค
JWT๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด Payload์์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ ๊ฐ์ ๋ค์ํ ์ ๋ณด๋ฅผ ํฌํจํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ JWT๊ฐ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ผ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ๊ทธ๋ก ์ธํด ์ฌ๋๋ค์ด ํ๋ ์คํด์ค์ ํ๋๊ฐ Oauth๋ JWT์ด๋ค. ๋ผ๊ณ ์๊ฐํ๋ ์ฌ๋๋ ์ ์ง ์๋ค.
OAuth token์ ์ฌ์ฉํ๊ฒ ๋๋ฉด token์ ์ฌ์ฉํ์ฌ ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฅํ์ฌ ๋ค์ํ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๊ฒ ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ํด๋ผ์ด์ธํธ ์์ฒญ ์ ์๋ฒ๋ ๋งค๋ฒ ํ ํฐ ์ ์ฅ ๊ณต๊ฐ์์ ํ์ํ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฐพ์์ ์ฌ์ฉํ๊ฒ ๋๋ค.
https://bcho.tistory.com/999 [์กฐ๋ํ๋ ๋ธ๋ก๊ทธ์์ ์ธ์ฉ]
ํ ํฐ์ ํ์ ๊ณผ ํด์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
ํ ํฐ์ ๋ด์ ํด๋ ์(claim) ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ค. name-value ํ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ์๊ณ , ์ฌ๋ฌ๊ฐ์ ํด๋ ์ ๋ค์ ๋ฃ์ ์ ์๋ค.
์๋ช (Signature)์ ์์์ ๋ง๋ ํค๋(Header)์ ํ์ด๋ก๋(Payload)์ ๊ฐ์ ๊ฐ๊ฐ BASE64๋ก ์ธ์ฝ๋ฉํ๊ณ , ์ธ์ฝ๋ฉํ ๊ฐ์ ๋น๋ฐ ํค๋ฅผ ์ด์ฉํด ํค๋(Header)์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด์ฑ์ ํ๊ณ , ์ด ๊ฐ์ ๋ค์ BASE64๋ก ์ธ์ฝ๋ฉํ์ฌ ์์ฑํ๋ค.
ํ์ด๋ก๋์ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋ฉด ํ ํฐ์ ์ฌ์ด์ฆ๊ฐ ์ปค์ง ์ ์๋ค.
ํ ํฐ์ ํด๋ผ์ด์ธํธ์ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ฏ๋ก ํ ํฐ์ ๋ํ ์๋ณ์กฐ ์ฒดํฌ๋ฅผ ํ์ง ์๋๋ค๋ฉด ์์นซ ์๋ชป๋ ์์ฒญ์ ์ํํ ์ ์๋ค.
JWT ํ ํฐ์ ๋๊ตฌ๋ ๋ณตํธํ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ด๋ก๋์๋ ๋ฏผ๊ฐ์ ๋ณด๋ ๋ค์ด๊ฐ๋ฉด ์๋๋ค.
ํ ํฐ์ ๋งค ์์ฒญ์ ์๋ฒ์ ์ ์กํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์์๋ ๋ณ๋๋ก ์ ์ฅํ ํ์๊ฐ ์๋ค.