-
[๋คํธ์ํฌ] ์ฟ ํค(Cookie), ์ธ์ (Session), ํ ํฐ(Token)๋คํธ์ํฌ 2024. 6. 9. 20:31
๐ก์ด๊ฑธ ์ ์ธ๊น?
- http ํน์ง๋๋ฌธ์ด๋ค
- http๋ ์น์์ ์ด๋ฃจ์ด์ง๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ก์ ๊ธฐ๋ณธ์ด ๋๋ ํ๋กํ ์ฝ์ด๋ค
- ์ด http๋ ๋น์ฐ๊ฒฐ์ฑ(connectionless), ๋น์ํ์ฑ(stateless)๋ผ๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค
- ์ด๋ฐ ํน์ง์ผ๋ก ์๋ฒ๋ ํ์ฅ์ฑ์ด ๋์์ง๋ค๋ ์ฅ์ ์ ๊ฐ์ง ์ ์๋ค
- Connectionless ํ๋กํ ์ฝ(๋น์ฐ๊ฒฐ ์งํฅ)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ์ ๋, ์์ฒญ์ ๋ง๋ ์๋ต์ ๋ณด๋ธ ํ ์ฐ๊ฒฐ์ ๋๋ ์ฒ๋ฆฌ๋ฐฉ์์ด๋ค. - Stateless ํ๋กํ ์ฝ(์ํ์ ๋ณด ์ ์ง ์ํจ)
ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง์ง์๋ ์๋ฒ ์ฒ๋ฆฌ ๋ฐฉ์์ด๋ค. ํด๋ผ์ด์ธํธ์ ์ฒซ๋ฒ์ฌ ํต์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ค ํด๋, ๋๋ฒ์ฌ ํต์ ์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ์ง์๋๋ค.
๋ฌธ์ ์
ํ ์ฌ๋์ด ์น์ฌ์ดํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์๋ฒ์ ๋ณด๋ด๋ ๋ชจ๋ ์์ฒญ์ ์ฐ๊ฒฐ์ฑ์ด ์์ด์ ํญ์ ๋ค๋ฅธ ์ฌ์ฉ์๋ก ์ธ์ํ๊ฒ ๋๋ค
์น์ฌ์ดํธ์ ๋ก๊ทธ์ธํ๊ณ ์๋ฒ์ ๋ค๋ฅธ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด ์๋ฒ๋ ํ์ฌ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ์ํ์ธ์ง ์๋์ง ์ ์ ์๋ค
์ฟ ํค- ์ฟ ํค๋ ์น์ฌ์ดํธ์์ ๋ก๊ทธ์ธ, ๊ฒ์๊ธฐ๋ก ๋ฑ ์น์ฌ์ดํธ์์ ์ด๋ค ์ผ์ ํ๋์ง ์ฟ ํค์ ์ ์ฅํ๋ค
- ๊ณต๊ฐ ๊ฐ๋ฅํ ์ ๋ณด๋ฅผ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ์ํด
- ์น์ฌ์ดํธ ์ฌ๋ฐฉ๋ฌธ์ ํจ์จ์ ์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค
- ์์ ์ด ๋ถ๊ฐ๋ฅํ ์ค์ํ ์ ๋ณด๋ค์ ์ฟ ํค์ ์ ์ฅํ๋ ๊ฒ์ ๋ถ์ ์ ํ๋ค
- ์ ์ฅ ์์น : ํด๋ผ์ด์ธํธ์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๋๋ ํ๋๋์คํฌ
- ๋ง๋ฃ์๊ฐ์ ๋ฐ๋ผ ํด๋น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ฃํด๋ ๋จ์์๋ค
์ธ์
- ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฟ ํค์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ด์ ๋์๋ค
- ๋ง์ฝ ์ด๋ ๊ฒ ๋๋ค๋ฉด ๊ณต์ฉ ์ปดํจํฐ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ์ธ์ ๋ณด๊ฐ ์ ์ถ๋ ๊ฒ์ด๋ค http๋ก ๊ฐ์ธ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ค๋ณด๋ฉด ์ฟ ํค๊ฐ ์ ์ถ ๋๊ฑฐ๋ ์กฐ์์ด ๋ ์ ์๋ ๋ณด์ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ๋ค
๊ทธ๋ฆฌํ์ฌ ์ด๋ฌํ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ์ธ์ ์ด ํ์ํ์๋ค
- ์ธ์ ์ ์ค์ํ ์ ๋ณด๋ฅผ ์๋ฒ์์ ๊ด๋ฆฌ๋ฅผ ํ๋ค
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ ์๋ค
- ์ธ์ ์ ์๋ฒ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์๋ฐฑ, ์์ฒ, ์๋ง์ผ๋ก ๋์ด๋๋ค๋ฉด ํด๋น ์ ์ ์ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ๋ฐ์ดํฐ ๋งค์นญ์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉด์ ์๋ฒ์ ๋ถํ๊ฐ ๊ฐํด์ง๊ฒ ๋๋ค
- ์ ์ฅ ์์น : ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๋ฉด ๋ง๋ฃ์๊ฐ์ ์๊ด์์ด ์ญ์ ๋๋ค
๐ก์ด๋ป๊ฒ ์๋ณํ ๊น?
- ์ฌ์ฉ์๊ฐ ์ ๊ทผ์ ํ๋ฉด ์ธ์ ID๋ผ๋ ๊ธฐ๊ฐ์ด ์งง์ ์์ ํค๋ฅผ ๋ฐ๊ธํ๋ค
- ์ฌ์ฉ์๋ ์ด ์์ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ฐ ํด๋น ์๋ฒ์ ์ ๊ทผํ ๋ ์ธ์ ID๋ฅผ ๋ณด๋ธ๋ค
- ์๋ฒ์์๋ ์ด ์ธ์ ID๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ค
ํ ํฐ
๋ง์ฝ ์ธ์ ID๋ฅผ ์ฌ์ฉ์๊ฐ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์๋ณ์ ๋ชปํ๋ค
์ด๋ฐ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ํ ํฐ์ด ํ์ํ์๋ค
Authentication : ์ธ์ฆ. ๋ด๊ฐ ๋๊ตฌ์ธ์ง ์ฆ๋ช ! ํด์ฃผ๋ ๊ฒ.
Authorization : ์ธ๊ฐ. ์.. ๋๊ตฌ๋ ! ok ํต๊ณผ๋คํด๋น ์๋ฒ์์ ์ฌ์ฉํ๋ ๋น๋ฐ ํค๊ฐ ์๋ค
๋น๋ฐ ํค๋ฅผ ํตํด์ ์ด ํ ํฐ์ด ์ ํจํ์ง, ํ ํฐ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํตํด์ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ค
๋ฌธ์์ด๋ก ๋์ด์๋ค
๐ก๊ทธ๋ผ ์กฐ์์ด ๊ฐ๋ฅํ ๊น?
- ์กฐ์ํ ํ ํฐ์ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด ์ ํจํ ํ ํฐ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋งํ๊ฒ ๋๊ณ ์ ๊ทผ์ ์ฐจ๋จํ๊ฒ ๋๋ค
๐ก์ธ์ ๋ณด๋ค ์ข์๊น?
- ๊ทธ๊ฑด ์๋๋ค ํ ํฐ์ ๋ง์ฝ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ํ๊ฐ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ํ๋ค๊ณ ํ์๋ ๋ง์ฝ ํ ํฐ์ด ์ ํจํ ํ ํฐ์ด๋ฉด ๋ชจ๋ ์ ์์ด ๊ฐ๋ฅํ๋ค
- ๊ทผ๋ฐ ์ธ์ ์ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ์ ์ํ ์ ์๋ ์์ด๋๋ก ๋ค์ ์ ์ํ๋ ๊ฒฝ์ฐ๋ ๋ง๋๋ค ๋๊ฐ ์๋ฒ์์ ์ปจํธ๋กค์ด ๊ฐ๋ฅํ๋ค
๊ตฌ์กฐ
- ํ ํฐ์ ํค๋(Header), ํ์ด๋ก๋(payload, ์๋ช (signature) ์ด๋ ๊ฒ ์ธ๊ฐ๋ก ๊ตฌ๋ถํ๋ ๊ตฌ์กฐ์ด๋ค
Header
JWT๋ฅผ ๊ฒ์ฆํ๋๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง JSON ๊ฐ์ฒด๋ Base64 URL-Safe ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด์ ๋๋ค. ํค๋๋ jwt๋ฅผ ์ด๋ป๊ฒ ๊ฒ์ฆ(verify)ํ๋๊ฐ์ ๋ํ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค. alg๋ ์๋ช ์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๊ณ , kid๋ ์๋ช ์ ์ฌ์ฉํ๋ ํค(pubilc/private key)๋ฅผ ์๋ณํ๋ ๊ฐ์ ๋๋ค.
Payload
JWT์ ๋ด์ฉ์ ๋๋ค. ํ์ด๋ก๋์ ์๋ ์์ฑ๋ค์ ํด๋ ์ ์ (Claim Set)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ํด๋ ์ ์ ์ jwt์ ๋ํ ๋ด์ฉ(ํ ํฐ ์์ฑ์์ ์ ๋ณด, ์์ฑ์ผ์,,,)์ด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ฃผ๊ณ ๋ฐ๊ธฐ๋ก ํ ๋ฐ์ดํฐ๋ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Signature
์ (.)์ ๊ตฌ๋ถ์๋ก ํด์ ํค๋์ ํ์ด๋ก๋๋ฅผ ํฉ์ง ๋ฌธ์์ด์ ์๋ช ํ ๊ฐ์ ๋๋ค. ์๋ช ์ ํค๋์ alg์ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น๋ฐ ํค๋ฅผ ์ด์ฉํด ์์ฑํ๊ณ Base64 URL-Safe๋ก ์ธ์ฝ๋ฉ ํฉ๋๋ค.
์ฅ์
- header์ payload ๋ฅผ ๊ฐ์ง๊ณ signaure๋ฅผ ์์ฑํ๋ฏ๋ก ๋ฐ์ดํฐ ์๋ณ์กฐ๋ฅผ ๋ง์ ์ ์๋ค
- ์ธ์ฆ ์ ๋ณด์ ๋ํ ๋ณ๋์ ์ ์ฅ์๊ฐ ํ์์๋ค. (์๋ฒ ๋ถํ ↓)
- JWT๋ ํ ํฐ์ ๋ํ ๊ธฐ๋ณธ ์ ๋ณด๊ณผ ์ ๋ฌํ ์ ๋ณด ๋ฐ ํ ํฐ์ด ๊ฒ์ฆ ๋์๋ค๋ ์๋ช ๋ฑ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์ฒด์ ์ผ๋ก ์ง๋๊ณ ์๋ค
- ํ ํฐ์ ํ ๋ฒ ๋ฐ๊ธ๋๋ฉด ์ ํจ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋ ๋๊น์ง ๊ณ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค
๋จ์
- ์ฟ ํค๋ ์ธ์ ๊ณผ ๋ค๋ฅด๊ฒ JWT๋ ํ ํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ด ์ธ์ฆ ์์ฒญ์ด ๋ง์์ง์๋ก ๋คํธ์ํฌ ๋ถํ๊ฐ ์ฌํด์ง๋ค
- payload ์์ฒด๋ ์ํธํ๋์ง ์๊ธฐ ๋จ๋ฌธ์ ์ ์ ์ ์ค์ํ ์ ๋ณด๋ฅผ ๋ด์ผ๋ฉด ์๋๋ค
- ํ ํฐ์ ํ์ทจ๋นํ๋ฉด ๋์ฒํ๊ธฐ ์ด๋ ต๋ค
- ํน์ ์ฌ์ฉ์์ ์ ์์ ๊ฐ์ ๋ก ๋ง๋ฃํ๊ธฐ ์ด๋ ต์ง๋ง, ์ฟ ํค/์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ์๋ฒ ์ชฝ์์ ์ฝ๊ฒ ์ธ์ ์ ์ญ์ ํ ์ ์๋ค
'๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋คํธ์ํฌ] Socket ์ด๋? (0) 2024.09.01 [๋คํธ์ํฌ] TCP/IP 4๊ณ์ธต (0) 2024.07.11 [๋คํธ์ํฌ] OSI 7๊ณ์ธต 7 Layer (0) 2024.07.09 [๋คํธ์ํฌ] 3-way handshake ์ 4-way handshake (0) 2024.05.10 [๋คํธ์ํฌ] TCP ์ UDP (0) 2024.05.09