์ฐธ๊ณ ์ฌ์ดํธ
- ๋๋ฌด๋ฅผ ์ฌ์์ฌ๋๋์ ํฐ์คํ ๋ฆฌ
- ํ๋๋์ ๋ธ๋ก๊ทธ
- ๋ถํ๋ ํค๋ณด๋๋์ ํฐ์คํ ๋ฆฌ
- ํธ๋ฅด๊ณ ๊ฐ๋ฐ๋์ ํฐ์คํ ๋ฆฌ
๐ ๋ก๊ทธ์ธ ๋ฐฉ์ ์ดํด
๋ก๊ทธ์ธ์ ํฌ๊ฒ ์ธ์ ๋ฐฉ์๊ณผ ํ ํฐ ์ธ์ฆ ๋ฐฉ์์ผ๋ก ๊ตฌ๋ถ๋๋ค.
HTTP๋ statelessํ ํน์ฑ์ ๊ฐ์ง๋ฉฐ, ๋ฐ๋ก ์ง์ ์ ์ํ ๋ํ ์ ์ฅ์ด ๋์ง ์๋๋ค.
๊ทธ๋ ๋ค๊ณ ์ฐ๋ฆฌ๋ ์๋ฒ์ ์์ฒญํ ๋๋ง๋ค ํธ์ถํ ๋๋ง๋ค ๋ก๊ทธ์ธ์ฐฝ์ ์ด๊ณ ์ธ์ฆํ์ง ์๋๋ค.
์ ์ ๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์ฌ ์๋ฒ์ ์ธ์ฆ๋ ํ์์ธ ๊ฒ์ด ํ์ธ๋๋ฉด ์ ์ ์๊ฒ ์ธ์ ๋๋ ํ ํฐ์ ๋ฐ๊ธํ๋ค.
๊ทธ๋ผ ์ ์ ๋ ์ธ์ ๋๋ ํ ํฐ์ ๋ก์ปฌ์คํ ๋ฆฌ์ง ๋๋ ๐ชCookie๋ก ๊ฐ์ง๊ณ ์๋ค๊ฐ ์๋ฒ์ ์์ฒญํ ๋๋ง๋ค ์ธ์ ๋๋ ํ ํฐ์ ๋ณด๋ธ๋ค.
๐ Session ๋ฐฉ์
์ธ์ ๋ฐฉ์์ ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๊ฐ ์๋ฒ์ ์ธ์ ์ ์ฅ์์ ์ ์ฅํ๊ณ , ์ฌ์ฉ์์๊ฒ ์ ์ฅ๋ ์ธ์ ์ ๋ณด ์๋ณ์์ธ Session ID๋ฅผ ๋ฐ๊ธํ๋ค.
์ฌ์ฉ์์ Session ID๋ ๋ธ๋ผ์ฐ์ ์ Cookie ํํ๋ก ์ ์ฅ๋๋ค.
์ฌ์ฉ์๋ ์๋ฒ์ ์์ฒญํ ๋๋ง๋ค HTTP Cookie ํค๋์ Session ID๋ฅผ ํจ๊ป ์๋ฒ๋ก ์ ์กํ๋ค.
์๋ฒ๋ ์์ฒญ์ ๋ฐ๊ณ , Session ID์ ํด๋นํ๋ ์ธ์ ์ ๋ณด๊ฐ ์ธ์ ์ ์ฅ์์ ์กด์ฌํ๋ฉด ์ธ์ฆ๋ ์ฌ์ฉ์๋ก ํ๋จํ๋ค.
๐ Token ๋ฐฉ์
ํ ํฐ์ ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ๋ก์ปฌ์คํ ๋ฆฌ์ง ๋๋ Cookie์ ์ง์ ๋ค๊ณ ์๋ ๋ฐฉ์์ด๋ค.
๋ํ์ ์ธ ํ ํฐ์ธ jwt์ ๊ฒฝ์ฐ ๋์งํธ ์๋ช ์ด ์กด์ฌํด ํ ํฐ ๋ด์ฉ์ ์๋ณ์กฐ ์ฌ๋ถ๋ฅผ ํ๋จํ์ฌ ์๋ฒ์ธก์ด ํ์ธํ ์ ์๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉ์๊ฐ ๊ฐ์ง ํ ํฐ์ HTTP์ Authorization(์ธ๊ฐ) ํค๋์ ์ค์ด ๋ณด๋ธ๋ค.
์ด ํค๋๋ฅผ ์์ฒญ ๋ฐ์ ์๋ฒ๋ ํ ํฐ์ ์๋ณ์กฐ ๋ฐ ์ ํจ์ฑ์ ํ์ธํ๊ณ ์ฌ์ฉ์๋ฅผ ์ธ๊ฐํ๋ค.
๐ช Token์ด๋
ํ ํฐ์ ํด๋น ์๋ฒ์์ ์ธ์ฆํ ๐ซ ์ถ์ ์ฆ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์บ๋ฆฌX์๋ฒ ์ด๋ฅผ ์
์ฅํ๋ฉด ๊ฐ ๊ฐ์ธ๋ง๋ค์ ๋ฐ์ฝ๋ ํ์ฐ(ํ ํฐ)๋ฅผ ๋ฐ์ต๋๋ค.
์บ๋ฆฌX์๋ฒ ์ด ์์์ ์์ ๋กญ๊ฒ ๋จน๊ฑฐ๋ฆฌ๋ฅผ ์ฆ๊ธฐ๊ธฐ ์ํ ๋จ๊ณ๋ก๋
- ์์(๋ฐ์ดํฐ)์ ์ฃผ๋ฌธ(์์ฒญ)
- ๋ฐ์ฝ๋ ํ์ฐ(ํ ํฐ)๋ฅผ ๋งค์ ์ง์(์๋ฒ)์๊ฒ ๊ฒฐ์ ๋ฅผ ์์ฒญ
- ์์(๋ฐ์ดํฐ)๋ฅผ ๋ฐ๋๋ค.
์์ ๊ฐ์ด ์์ฑ์๋ ์ดํดํ๊ณ ์๋ค.
์ด๋, ํด๋น ๋ฐ์ฝ๋ ํ์ฐ๋ฅผ ํตํด ์ฌ์ฉ์๋ ์บ๋ฆฌX์๋ฒ ์ด์์ ์ปจํ
์ธ ๋ฅผ ์์ ๋กญ๊ฒ ์ด์ฉํ ์ ์์ผ๋ฉฐ,
์ง์์ ์บ๋ฆฌX์๋ฒ ์ด์ ์ ์ ์
์ฅํ ์ฌ๋์ด๋ผ๋ ๊ฒ์ ํ์ธํ์ง๋ง, ๊ตฌ๋งค์์ ์ ๋ณด๋ ์์ธํ ๋ชจ๋ฅธ๋ค.
์ด์ฒ๋ผ ์ธ์ฆ๋ ๊ฐ(๋ฐ์ฝ๋)๋ง ์ ๊ณตํ๋ฉฐ, ๋ณด์์ ์ผ๋ก ์ธ์ฆ/์ธ๊ฐ๋ฅผ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ jwt
์ด๋ค.
๐ ๋ณด์
๐ Session
์ธ์
์ ๊ฒฝ์ฐ ๋ชจ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ์ธก๋ฉด์ ์ ๋ฆฌํ๋ค.
์ธ์
ID๊ฐ ํด์ปค์๊ฒ ํ์ทจ๋๋คํด๋, ์๋ฒ์ธก์์ ํด๋น ์ธ์
์ ๋ฌดํจ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
๐ Token
ํ ํฐ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ผ์ ํด์ปค์๊ฒ ํ์ทจ๋๋ฉด ํด๋น ํ ํฐ์ด ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง ์์๋ฌด์ฑ ์ผ๋ก ํผํด๋ฅผ ์ ์ ์ ๋ฐ์ ์๋ค.
๋ํ jwt ํน์ฑ์ ํ ํฐ์ ์ค๋ฆฐ payload๊ฐ ๋ณ๋๋ก ์ํธํ ๋์ด์์ง ์์ ๋๊ตฌ๋ ๋ด์ฉ์ ํ์ธํ ์ ์๋ค. ๋ฐ๋ผ์ ํ ํฐ ์ธ์ฆ ์, payload์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ ์๋ค.
โ๏ธ XXS๊ณต๊ฒฉ / โ๏ธ CSRF ๊ณต๊ฒฉ
• XXS : JS๋ฅผ ์ฝ์ ํ์ฌ ์ ๋ณด ๋ณ๊ฒฝ ๋ฐ ํ์ทจ
XXS๊ณต๊ฒฉ์ ๋ง๊ธฐ ์ํด์๋ ๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ณณ์ ํ ํฐ์ ๋๋ฉด ์๋๋ค.
๋ธ๋ผ์ฐ์ ์์ window.localStorage
๋ window.sessionStorage
๋ก ์ ์ญ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋ชจ๋ ๊ณณ์ ํ ํฐ์ ๋์ง ์๋ ๊ฒ์ด ์ข๋ค.
๋ฐ๋ผ์ RefreshToken์ Cookie์ httpOnly
, secure
์ต์
์ ๋ถ์ฌ ์๋ฒ๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํด์ผํ๋ค.
• CSRF : ํด์ปค๊ฐ ๊ฒ์๋ฌผ์ ์ ์ฑ ์ฝ๋๋ฅผ ๋ฃ์ด๋๊ณ ๊ฒ์๋ฌผ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋, ์๋์น ์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋
CSRF ๊ณต๊ฒฉ์ ๋ง๊ธฐ ์ํด์๋ AccessToken์ ํน์ ์์ฒญ์ ํตํด ๋ณด๋ผ ์ ์๊ฒ ๋ง๋ค์ด์ผํ๋ค.
๐ Token์ ๋ณดํธํ
์ต๊ทผ์ ๋ชจ๋ฐ์ผ ์ฑ์ด๋ ์น์ Token ๋ฐฉ์์ ์ฑํํ๋ค.
๊ทธ ์ด์ ๋ ์๋์ ๊ฐ๋ค.
๐ ํ์ฅ์ฑ
์ผ๋ฐ์ ์ผ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์๋ฒ ํ์ฅ ๋ฐฉ์์ ์ํ ํ์ฅ์ ์ฌ์ฉํ๋ค. ์ฆ, ํ ๋๊ฐ ์๋ ์ฌ๋ฌ๋์ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
์ด๋ ๋ณ๋์ ์์
์ ํด์ฃผ์ง ์๋๋ค๋ฉด, ์ธ์
์ธ์ฆ ๋ฐฉ์์ ์ธ์
๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ๊ฒช๊ฒ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์
์ ์ฒ๋ฆฌํด์ฃผ์ด์ผํ๋ค.
ํ ํฐ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก, ์ธ์
๋ถ์ผ์น ๋ฌธ์ ๋ก๋ถํฐ ์์ ๋กญ๋ค.
๋ฐ๋ผ์ ๋์ ํ์ฅ์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
๐ชจ ์๋ฒ ๋ถ๋ด
์ธ์
์ธ์ฆ ๋ฐฉ์์ ์๋น์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ์์ด ๋ง์์ง๋ฉด ์๋ฒ์ ๋ถ๋ด์ด ์ฆ๊ฐํ๋ค.
ํ์ง๋ง ํ ํฐ ์ธ์ฆ ๋ฐฉ์์ ์ ์ ์ ์๊ฐ ์ผ๋ง๋ ๋๋ ์๋ฒ์ ๋ถ๋ด์ด ์ฆ๊ฐํ์ง ์๋๋ค.
๋ฐ๋ผ์ ์๋ฒ์ ๋ถ๋ด์ผ๋ก ์ธํด ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ด ๋ ์ ๋ฆฌํ๋ค.
์ธ์ฆ ๋ฐฉ์ | Token | Session |
๋ณด์์ฑ | - | WIN |
์ธ๋ถ ๋ ธ์ถ ์ ๋๋น | - | WIN |
์ฑ๋ฅ | - | WIN |
๋น์ฉ | WIN | - |
์๋ฒ ๋ถํ (ํจ์จ์ฑ) | WIN | - |
ํ์ฅ์ฑ | WIN | - |
๊ฐ์์ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค.
Session์ ์ฌ์ฉ์์๊ฒ ์ข๋ค๊ณ ๋๊ปด์ง์ง๋ง,
๊ฐ์ธ์ ์ผ๋ก ๐ข๊ธฐ์ ์ ๐ฐ์ด์ค์ ์ถ๊ตฌํ๋ ์ง๋จ์ด๋ค๋ณด๋ Token์ด Session๋ณด๋ค ์ ๋ฆฌํ ๊ฒ์ผ๋ก ์๊ฐํด์ Token์ด ๋์ธ๊ฐ ๋ ๊ฑฐ ๊ฐ๋ค.
Token ๋ฐฉ์์ ์ ๊ตฌํํ๋ฉด์ Session์ ์ฅ์ ์ ์ด๋์ ๋ ์ปค๋ฒ๊ฐ ๊ฐ๋ฅํ์ง๋ง, Session์ ๋๊ฐ ์ปค๋ฒ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋ณธ๋ค.
'Library > jwt' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ jwt ] React, Nodejs - jwtํ ํฐ์ ๋ฐ๊ธํ๊ณ ์ ํจ์ฑ์ ๊ฒ์ฌํด๋ณด์. (0) | 2024.02.29 |
---|---|
[ jwt ] AccessToken๊ณผ RefreshToken (0) | 2024.02.23 |
[ jwt ] jwt์ ๊ตฌ์กฐ (0) | 2024.02.23 |