
JSON Web Token

์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ค์ ์ํธํ์ํจ JSON ํ ํฐ
JWT ํ ํฐ์ HTTP ํค๋์ ์ค์ด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ๋ ๋ฐฉ์
(JWT ํ ํฐ = Access Token)

. ์ ๊ตฌ๋ถ์๋ก Header, Payload, Signature ๋ก ๋๋๋ค.
key-value ๋ก ์ด๋ฃจ์ด์ง ํ ์์ Claim ์ด๋ผ๊ณ ํ๋ค.
-> ํ ํฐ์ ์๋ณ์กฐ ์ฌ๋ถ ํ์ธ์ ์ฌ์ฉ

1. ์ฌ์ฉ์๊ฐ ์๋ฒ์ ๋ก๊ทธ์ธ ์ธ์ฆ ์์ฒญ
2. ์๋ฒ์์ Header, Payload, Signature ์ ์ ํ JWT(์ก์ธ์ค + ๋ฆฌํ๋ ์)๋ฅผ ์์ฑํ์ฌ ์ฟ ํค์ ๋ด์ ํด๋ผ์ด์ธํธ๋ก ์ ์ก
3.ํด๋ผ์ด์ธํธ๋ JWT๋ฅผ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ
Authorization header ์ Access Token์ ๋ด์ ์ ์ก4.์๋ฒ๋ ํ ํฐ์ ์ก์ธ์ค ํ ํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ
๋ฆฌํ๋ ์ ํ ํฐ์ด ํ์ทจ๋นํ๋ค๋ฉด ๋ฌด์ฉ์ง๋ฌผ ์๋๊น ?
YES !
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ํน์ง ์ค ํ๋๋ โ๋ฌด์ํ์ฑโ ์ด๋ค.
์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๊ฐ ๋ด๊ธด ํ ํฐ์ด ์๋ฒ๊ฐ ์๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๊ธฐ ๋๋ฌธ์, ์๋ฒ์์ ๋ฐ๋ก ์ ์ฅํ ํ์๊ฐ ์๋ค. ์ฆ, stateless ์ธ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ก์ธ์ค ํ ํฐ์ ํ์ทจ๋นํ๋ฉด ์๋ฒ๋ ํ์ธํ ๋ฐฉ๋ฒ์ด ์๋ค. ์ด๋ฅผ ์ํด ๋ฆฌํ๋ ์ ํ ํฐ์ด๋ผ๋ ๊ฐ๋ ์ด ์๊ฒผ๋ค.
์ก์ธ์ค ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ(๋ณดํต 30๋ถ)์ ์งง๊ฒ ํ๋ค๋ฉด ํ์ทจ๋นํ๋๋ผ๋ ์ค๋ ์ฌ์ฉํ์ง ๋ชปํ ๊ฒ์ด๋ค. ํ์ง๋ง ์ฌ์ฉ์ฅ ์ ์ฅ์์๋ ์ ํจ๊ธฐ๊ฐ์ด ๋๋ ๋๋ง๋ค ํ ํฐ์ ์ฌ๋ฐ๊ธํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค. ๋ฐ๋ผ์ ๋ฆฌํ๋ ์ ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ์ ๊ธธ๊ฒ ํ์ฌ(๋ณดํต 2์ฃผ) ์ก์ธ์ค ํ ํฐ์ด ๋ง๋ฃ๋๋ฉด ์๋ก์ด ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก๋ ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ๋ก๊ทธ์ธ ์ํ๊ฐ ์ ์ง๋๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋ค.
ํ์ง๋ง ๋ฆฌํ๋ ์ ํ ํฐ์ โ๋ฌดํจํโ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ๋ฆฌํ๋ ์ ํ ํฐ์ ์๋ฒ์์๋ ์ ์ฅ์ ํ๊ณ ์๋ค. ๋ฐ๋ผ์ ๋ฆฌํ๋ ์ ํ ํฐ์ด ํ์ทจ๋นํ์ ๋, ํ์ทจ๋นํ๋ค๋ ์ด๋ ํ ์์ฒญ์ด ์ค๋ฉด ํ ํฐ์ ๋ฌดํจํ ์ํฌ ์ ์๋ค๋ ๊ฒ์ด๋ค.
โ Refresh Token์ด ํ์ทจ๋๋๋ผ๋ ์๋ฒ์ ๊ฒ์ฆ์ผ๋ก AccessToken ์ฌ๋ฐ๊ธ์ ๋ฐฉ์งํ ์ ์๋ค.
ํ ํฐ์ ์ด๋์ ์ ์ฅ๋ ๊น ?
Access Token์ ์์ฒญ header์ authorization์ ๋ด๊ธด๋ค. โ ๊ณต์ ๊ท๊ฒฉ
Refresh Token์ http only cookie๋ก ๋๊ฒจ์ฃผ๋ฉด js๋ฅผ ํตํ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํด์ง๋ฏ๋ก ์คํฌ๋ฆฝํธ ์ฝ์
๊ณต๊ฒฉ(XSS)์ ๋ง์ ์ ์๋ค. ๋ํ http secure โ https๋ก๋ง ํต์ ํ๋ ๋ฐฉ๋ฒ์ ํตํด ์ฟ ํค์ ๋ณด๊ดํ๋ ๊ฒ์ด ์ข๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ์ทจ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์๋ค๊ณ ํ๋ค.
ํ ํฐ์ ์ ํจ์ฑ์ ์ด๋ป๊ฒ ๊ฒ์ฆํ ๊น ?
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์์ ๋ฆฌํ๋ ์ ํ ํฐ ์์ด ๋ฌด์ํ๋ก ์ด์ํ๋ค๋ฉด, ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ํ ํฐ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ๊ฒ์ฆ์ ํ๋๊ฑด์ง ๊ถ๊ธํ๋ค.
exp ๋ฅผ ํ์ธํ์ฌ ์ ํจ ๊ธฐ๊ฐ์ด ์ง๋ฌ๋์ง ํ๋จโ ์ฆ, ํ ํฐ ๊ทธ ์์ฒด๊ฐ ๋ฐ์ดํฐ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์, ํ ํฐ ์์ฒด๋ก ์ธ์ฆ์ ์ฒ๋ฆฌํจ
[์ถ๊ฐ ๋ณด์ ๊ฐํ ๋ฐฉ๋ฒ]