๋ ๋จ์ด์ ์ฐจ์ด๊ฐ ์์๊น? ์ถ์์ง๋ง ์์ฝ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ ์ฐจ์ด๊ฐ ์๋ค๋ ๊ฑธ ์์๋ค. jwt์ ์ธ์ ์ ๋ํด ์ ๋ฆฌํด๋ณด๊ธฐ ์ , ์ด ๋จ์ด๋ค ๋ถํฐ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
: ์ฝ๊ฒ ๋งํด์ ๋ก๊ทธ์ธ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ด๊ฐ ์ด ์ฌ์ดํธ์ ๊ฐ์
๋ ํ์์์(= ์ฆ ํน์ ์๋น์ค์ ์ผ์ ๊ถํ์ด ์ฃผ์ด์ง ์ฌ์ฉ์์์) ์์ด๋๋ ํจ์ค์๋ ๋ฑ์ผ๋ก ์ธ์ฆํ๋ ๊ฒ
: ํ๋ฒ ์ธ์ฆ์ ๋ฐ์ ์ฌ์ฉ์๊ฐ ์ดํ ์๋น์ค์ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ๋ (= ๋ก๊ทธ์ธ์ด ์ ์ง๋๋ ์ํ์์ ์ผ์ด๋๋ ์ผ)
์๋ฅผ๋ค์ด, ๋ด๊ฐ ํ์ด์ค๋ถ์ ๋ก๊ทธ์ธ์ผ๋ก ์ธ์ฆ์ํ๊ณ ๋์ '๋ด' ์น๊ตฌ๋ค์ ๋ชฉ๋ก์ ๋ณด๊ฑฐ๋ '๋ด ๊ณ์ ์ผ๋ก' ์ข์์๋ฅผ ๋๋ฅด๋ ํ์๋ฅผ ํ ๋ ํ์ด์ค๋ถ์ด ๋ด๊ฐ ๋ก๊ทธ์ธ ๋์ด์์์ ์์๋ณด๊ณ ํ๊ฐ๋ฅผ ํด์ฃผ๋ ๊ฒ.
์ด์ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๋ค์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋ก๊ทธ์ธ ์ ์ธ์ ID ์ ๋ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ๊ธํด์ฃผ๊ณ ๋๋จธ์ง ์ ๋ฐ์ ์์ ์ด ๊ฐ๊ณ ์๋๋ค. ๊ทธ๋ฌ๋ฉด ํด๋ผ์ด์ธํธ๋ ์์ฒญ ์๋ง๋ค ์ธ์ ID๊ฐ ๋ด๊ธด ์ฟ ํค๋ฅผ ํค๋์ ๋ด์ ๋ณด๋ด๋ฉด ์๋ฒ์์ ๊ฐ์ ๋น๊ตํ์ฌ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ค. ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ฏ๋ก Stateful ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋ก๊ทธ์ธ ์ ํ ํฐ์ ๋ฐ๊ธํด์ฃผ๊ณ , ์๋ฒ์ ์์ฒญ์ ํ ๋ HTTP ํค๋์ ํ ํฐ์ ํจ๊ป ๋ณด๋ด๋๋ก ํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๋ ๋ฐฉ์์ด๋ค.
์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ ์ด์ ์๋ฒ์ ์ ์ฅํ์ง ์๊ณ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก๋ง ์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก Stateless ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
JWT๋ Json Web Token์ ์ฝ์๋ก ์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ฅผ ์ํธํ์ํจ ํ ํฐ์ ๋ปํ๋ค.
jwt.io์์ ๊ฐ์ ธ์จ ์์)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
์ ๋จ์ด๋ค์ ํ๋์ฉ ์ดํด๋ณด๊ฒ ๋ค ๐ง
Base64๋ก ๋์ฝ๋ฉํด๋ณด๋ฉด JSONํ์์ผ๋ก ์ฌ๋ฌ ์ ๋ณด๋ค์ด ๋ค์ด์๋ค.
์ด ํ ํฐ์ ๋๊ฐ ๋๊ตฌ์๊ฒ ๋ฐ๊ธํ๋์ง, ์ด ํ ํฐ์ด ์ธ์ ๊น์ง ์ ํจํ์ง, ๊ทธ๋ฆฌ๊ณ ์๋น์ค๊ฐ ์ฌ์ฉ์์๊ฒ ์ด ํ ํฐ์ ํตํด ๊ณต๊ฐํ๊ธฐ ์ํ๋ ๋ด์ฉ์ด ๋ด๊ฒจ ์๋ค.
ex) ์ฌ์ฉ์์ ๋๋ค์, ์๋น์ค์์ ๋ ๋ฒจ, ๊ด๋ฆฌ์ ์ฌ๋ถ ๋ฑ
โก๏ธ ์ด๋ ๊ฒ ํ ํฐ์ ๋ด๊ธด ์ฌ์ฉ์ ์ ๋ณด ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ Claim์ด๋ผ๊ณ ํจ
๋์ฝ๋ฉํด๋ณด๋ฉด ๋๊ฐ์ง ์ ๋ณด๊ฐ ๋ด๊ฒจ์์.
1) type: ํ ํฐ์ ํ์
์ธ๋ฐ ์ธ์ ๋ JWT๊ฐ ๋ค์ด๊ฐ
2) alg: ์๊ณ ๋ฆฌ์ฆ์ ์ฝ์, verify signature(์๋ช
)๊ฐ์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ง์ ๋จ. HS256 ๋ฑ ์ฌ๋ฌ ์ํธํ ๋ฐฉ์ ์ค ํ๋๋ฅผ ์ง์ .
ํค๋ + ํ์ด๋ก๋ + ์๋ฒ์ ๊ฐ์ถฐ๋์ ๋น๋ฐ ๊ฐ ์ด ์ ์ ์ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฃ๊ณ ๋๋ฆฌ๋ฉด verify signature ๊ฐ์ด ๋์ค๋ ๊ฒ์ด๋ค.
์งง์ ๋ง๋ฃ ๊ธฐํ ์ค์
Sliding Session
: Sliding Session์ ์๋น์ค๋ฅผ ์ง์์ ์ผ๋ก ์ด์ฉํ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋์ผ๋ก ํ ํฐ ๋ง๋ฃ ๊ธฐํ์ ๋๋ ค์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ธ ์์ฑ ํน์ ๊ฒฐ์ ๋ฑ์ ์์ํ ๋ ์๋ก์ด ํ ํฐ์ ๋ฐ๊ธํด์ค ์ ์๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ์ ์์ฃผ ํ ํ์๊ฐ ์์ด์ง๋ค.
Refresh Token
refresh token์ ๋ํด์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ ํฌ์คํ
์์ ์์ธํ ์ ๋ฆฌํด๋์๋ค.
https://velog.io/@yulhee741/Refresh-Token-%EC%A0%95%EB%A6%AC
์ฐธ๊ณ )