Session & Cookie
์ฟ ํค ๐ช
- ์น ๋ธ๋ผ์ฐ์ ์ ์์ฒญ, ์๋ต์ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์กฐ๊ฐ
- ์ฟ ํค๋ ๋๋ฉ์ธ์ ์ ํ์ ์ด๋ฉฐ ์ ํจ ๊ธฐ๊ฐ์ด ์ ํด์ ธ์๋ค.
- Auth ์ธ์๋ ๋ค์ํ ๋ฐฉ์์ผ๋ก ํ์ฉ์ด ๊ฐ๋ฅํ๋ค
์ธ์
(Session)
- statelessํ HTTP ํน์ง์ ๋ณด์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ์ธ์
DB๋ฅผ ์ด์ฉํด์ ์ ์ ์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ๋ฉฐ Session ID๋ผ๊ณ ํ๋ ๋๋คํ key๋ฅผ ์ฟ ํค์ ๋ด์์ Auth์ ํ์ฉ
- ์ฟ ํค๋ฅผ ์ฌ์ฉํด์ Session ID๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด๋ค.
JWT
- Cookie๋ ์น ๋ธ๋ผ์ฐ์ ์๋ง ์กด์ฌํ๋ ๊ฒ์ผ๋ก, ๋ค์ํ ์ฅ์น๋ค๊ณผ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ด ํ์ํ๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ ๋ฐ๋ก Token Auth, ๊ทธ์ค์์๋ JWT ๋ฐฉ์์ด ๋ง์ด ์ฌ์ฉ๋๋ค.
- JWT๋ ์ผ์ ํ ๊ท์น์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ฐ๋จํ ์๋ช
์ ๋ํ ๋ฌธ์์ด๋ก ํ ํฐ ์์ฒด์ ์ ์ ์ ๋ํ ๊ฐ๋จํ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ ์๋ ํํ๋ค.
- JWT ๋ฐฉ์์ผ๋ก Auth๋ฅผ ์ฒ๋ฆฌํ๋ฉด Session DB๋ ์ธ์ฆ์ ์ํ ์ฌ๋ฌ๊ฐ์ง ๋ก์ง ์ฒ๋ฆฌ๊ฐ ํ์ ์๋ค.
์ฒ๋ฆฌ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ID/PW๋ฅผ ์๋ฒ๋ก ๋ณด๋
- ์๋ฒ์์ ID/PW๋ฅผ ๊ฒ์ฆํ๊ณ ์ ํจํ๋ค๋ฉด ์ผ์ ํ ํ์์ผ๋ก ์๋ช
์ฒ๋ฆฌ๋ Token์ ์๋ต
- ์ดํ ํด๋ผ์ด์ธํธ๋ ๋ชจ๋ ์์ฒญ ํค๋์ ํ ํฐ์ ๋ด์ ์๋ฒ๋ก ์์ฒญ์ ์ ์ก
- ์๋ฒ๋ ํด๋น ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๊ณ ์ ์ ์ ์ ์๊ณผ ๊ถํ์ ํ์ธ ํ ์์ฒญ์ ์ฒ๋ฆฌ
Session๊ณผ ์ฐจ์ด์
- ์๋ฒ์ ์ธ์
๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํ์ง ์์
- ํ ํฐ ์์ฒด๊ฐ ํ๋์ ์ธ์ฆ ๋ฐ์ดํฐ
- ์๋ฒ๋ ํ ํฐ์ด ์ ํจํ์ง๋ง ๊ฒ์ฆํ์ฌ ์ฒ๋ฆฌํ๋ค.
์ฅ/๋จ์
- ์๋ฒ์์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ๋ณต์กํ ์ฒ๋ฆฌ ๋ก์ง์ด ํ์ํ์ง ์์
๊ทธ๋ ๋ค ๋ณด๋ ์ผ๋ฐฉ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ๋ฌดํจํ ํ๋ ๋ฑ์ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํด์ง๋ค. (์ธ์
ํ
์ด๋ธ X)
โ ๋ชจ๋ ๊ธฐ๊ธฐ ๋ก๊ทธ์์, ํ์ฌ ์ ์ ์ ์ง ๊ด๋ฆฌ ๋ฑ
โ ์ธ์
์ด๋ DB ์์ด ์ ์ ๋ฅผ ์ธ์ฆํ๋ ๊ฒ์ด ๊ฐ๋ฅ
โ Token ์์ฒด๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ์ ๋ณด์ด๋ฏ๋ก ํ์ทจ ๋นํ ์ ๋ณด์์ด ์ทจ์ฝํ๋ค.
( ๋ง๋ฃ ๊ธฐํ์ ์งง๊ฒ ์ก์ ๋ง์ฝ ํ์ทจ ๋นํด๋ ์งง์ ์๊ฐ ์์ ์ ํจํ์ง ์์ ํ ํฐ์ ํํ๊ฐ ๋จ )
๊ตฌ์กฐ
. ์ ๊ธฐ์ค์ผ๋ก HEADER, PAYLOAD, VERIFY SIGATURE ์ธ ๋ถ๋ถ์ผ๋ก ๋๋์ด ๊ตฌ์ฑ๋๋ค.
Refresh Token
- Access Token์ด ๋ง๋ฃ๋์์ ๋ ์๋ก Access Token์ ๋ฐ๊ธ ๋ฐ๊ธฐ ์ํ Token
- Acces Token๋ณด๋ค ๊ธด ์ ํจ ๊ธฐ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค.
- ์ฃผ๋ก ์ฌ์ฉ์์ ๊ธฐ๊ธฐ์ ์ ์ฅํด๋๊ณ ์ฌ์ฉ๋๋ฉฐ ๋ง์ฝ Refresh Token๊น์ง ๋ง๋ฃ๋์๋ค๋ฉด ๋ค์ ์ธ์ฆ(๋ก๊ทธ์ธ)์ด ํ์ํด์ง๋ค.
- Refresh Token์ ํ์ทจ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด DB ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๋ค์ํ ๋ฐฉ์๋ ์กด์ฌํจ -> BlackList ๋ฑ
ORM

๊ฑด๋๋ด๋ค.