OSI 7 Layer ์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ๋คํธ์ํฌ ์์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ํ๋๋ก ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ๋ฌผ๋ฆฌ, ๋ฐ์ดํฐ๋งํฌ, ๋คํธ์ํฌ ๊ณ์ธต์ ํตํด ์ ์ก๋๊ณ ํธ๋์คํฌํธ ๊ณ์ธต์์ ์ ๋ณ๋ ํจํท์ ์ต์ข ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์ด๋ฒ ๊ธ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ HTTP ํ๋กํ ์ฝ์ ํค๋์ ์ ์ฅ๋๋ ์ธ์ฆ ๋ฐฉ์์ ๋ํด ์์๋ณด์
์ฟ ํค์ ์ธ์ ์ด๋?
HTTP ํ๋กํ ์ฝ์ stateless๋ผ๋ ํน์ง์ด ์๋ค. ํ๋ฒ ์์ฒญ์ด ๊ฐ๊ณ ์๋ต์ด ์ค๋ฉด ๊ทธ ์ ์ ์ ๋ณด๋ ์ ์ฅ๋์ง ์๊ณ ํต์ ์ด ๋๋๋ ํน์ง์ด๋ค. ์ด๋ฌํ ํน์ง์ ๋ณด์ํ๊ธฐ ์ํ ๊ฐ๋ ์ด ์ฟ ํค์ ์ธ์ ์ด๋ค. ์ฟ ํค(Cookie)๋ HTTP ํค๋์์ ํต์ ์์ ํน์ ํ ์ ๋ณด๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ์ํค๋ ๊ตฌ์กฐ ๋ฐ ์ ์ฅํ ํ์ผ์ด๋ค. ์ธ์ (Session)์ ์๋ฒ๋ฅผ ํตํด ์ฌ์ฉ์๋ณ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ธ์ ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์ ์ ์ฅ๋๋ฉฐ ์ธ์ ์๋ณ์(Session ID)๋ ๋ณดํต ์ฟ ํค์ ์ ์ฅ๋๋ค.
์ฟ ํค๋ ์น ๋ธ๋ผ์ฐ์ ์ ์์ ์ ๋ณด๊ฐ ์ ์ฅ๋ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ์ ์ฅํด ๋์๋ค๊ฐ, ๋์ผํ ์๋ฒ์ ์ฌ ์์ฒญ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ ์กํ๋ค.
์ผํ ์ฌ์ดํธ๋ SNS ์ฌ์ดํธ์์ ์๋ ๋ก๊ทธ์ธ์ด ๋๋ ์ด์ ๊ฐ ์ฟ ํค์ด๋ค. ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด์ฉํด์ ํ ๋ฒ ๋ก๊ทธ์ธ์ ํ๋ฉด ์๋ฒ๋ ์ธ์ ID๋ฅผ ๋ฐ์ํ๊ณ Set-Cookie ํค๋์ ์ค์ ํด์ ๋ฆฌ์คํฐ์คํ๋ค. ๊ทธ ํ์ ๋ฆฌํ์คํธ๋ ์ฟ ํค ํค๋์ ์ธ์ ID๋ฅผ ์ค์ ํด์ ์ํ๋๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ๋ก๊ทธ์ธ์ด ๋๋ ๊ฒ์ด๋ค.
1. ์ฌ์ฉ์๊ฐ ์ต์ด ๋ก๊ทธ์ธ์ ํ๋ค.
2. ์๋ฒ๊ฐ ํด๋น ์ฌ์ฉ์์ ๋ํ ์ธ์ ID๋ฅผ ๋ฐํํ๊ณ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๋ค.
ex)
์ฌ์ฉ์ | ์ธ์ ID |
user1 | 1234 |
user2 | 1111 |
3. set-Cookie ํค๋๋ฅผ ์ด์ฉํด์ ์ธ์ ID๋ฅผ responseํ๋ค.
ex)
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: SID=1234
[page content]
4. ๊ทธ ํ์ ๋ก๊ทธ์ธ์ด ํ์ํ request๋ Cookie ํค๋์ ์ธ์ ID๋ฅผ ํตํด ์ธ์ ์ ๋ณด๊ฐ ์ ์ฅ๋ ์๋ฒ๋ฅผ ํตํด ๊ถํ์ด ์๋ ์ฌ์ฉ์์ธ์ง ์๋์ง ๊ฒ์ฌํ๋ค.
GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: SID=1234;
JWT ํ ํฐ์ด๋
JWT ํ ํฐ์ด๋ JSON ๊ฐ์ฒด์ ์ธ์ฆ์ ํ์ํ ์ ๋ณด๋ค์ ๋ด์ ํ ๋น๋ฐํค๋ก ์๋ช ํ ํ ํฐ์ด๋ค.
JWT ํ ํฐ ๊ตฌ์ฑ์์
JWT ํ ํฐ์ ํค๋(header), ํ์ด๋ก๋(payload), ์๋ช (signature)๋ก ๊ตฌ์ฑ๋๋ค.
ํค๋์๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์์ ํ ํฐ์ ์ ํ์ ๋ํ๋ด๋ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ ์๋ค. ex) { "alg": "HS256", "typ": "JWT" }
ํ์ด๋ก๋์๋ ํ ํฐ์ ์ฌ์ฉ์์ ์ค์ ๋ฐ์ดํฐ์ ํ ํฐ์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ ์๋ค.
ex) { "sub": "1", "iss": "hyerim", "exp": 1238423, "iat": 12344656 }
sub - ํ ํฐ ์ ๋ชฉ (์ฌ์ฉ์์ ๋ํ ์๋ณ ๊ฐ)
iss - ํ ํฐ ๋ฐ๊ธ์
exp - ํ ํฐ ๋ง๋ฃ ์๊ฐ
iat - ํ ํฐ ๋ฐ๊ธ ์๊ฐ
์๋ช ์๋ ์ธ์ฝ๋ฉ๋ ํค๋์ ํ์ด๋ก๋๊ฐ ๋ค์ด๊ฐ๋ค. ์ธ์ฝ๋ฉ๋ ํค๋์ ํ์ด๋ก๋, ๋น๋ฐํค(Secret key) ๋ฅผ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํด์ฑํ์ฌ ์ ์ฅ๋๋ค.
JWT ํ ํฐ์ ๊ฐ 3๊ฐ์ง ๊ตฌ์ฑ์์๊ฐ ์ (.)์ ์ด์ฉํ์ฌ ์ฐ๊ฒฐ๋์ด ์์ฑ๋๋ค.
JWT ํ ํฐ ๋์ ํ๋ก์ธ์ค
1. ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ๋ค.
2. ๋ก๊ทธ์ธ ์ ๋ณด์ ๋ฐ๋ผ JWT ํ ํฐ์ ๋น๋ฐํค์ ํจ๊ป ๋ฐ๊ธํ๋ค.
3. ์ฌ์ฉ์ ๊ถํ์ด ํ์ํ ์์ฒญ์ ๋ณด๋ผ๋๋ง๋ค ํ ํฐ ์ ๋ณด๋ฅผ HTTP ํค๋์ ๋ด์ ๋ณด๋ธ๋ค.
4. ์๋ฒ์์ JWT ํ ํฐ์ ๋น๋ฐํค๋ก ๋์ฝ๋ฉํ ํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฒดํฌํ๊ณ ๊ถํ์ด ์๋์ง ํ์ธํ๋ค.
์ฟ ํค/์ธ์ ์ธ์ฆ, JWT ํ ํฐ ์ธ์ฆ์ ์ฅ๋จ์
์ฅ์ | ๋จ์ | |
์ฟ ํค/์ธ์ | ๋คํธ์ํฌ ๋ถํ ๋ฎ์ | ์ธ์ ์ ์ฅ์ ์ฌ์ฉ์ผ๋ก ์ธํ ์๋ฒ ๋ถํ |
JWT ํ ํฐ | ์ธ์ฆ์ ๋ํ ์ ๋ณด๊ฐ ํ ํฐ ์์ฒด์ ์ ์ฅ๋์ด ์์ด ๋ณ๋์ ์ ์ฅ์ ํ์ ์์ | - ํ ํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ด ์ธ์ฆ ์์ฒญ์ด ๋ง์์ง์๋ก ๋คํธ์ํฌ ๋ถํ๊ฐ ์ฌํด์ง - ํ ํฐ ๊ฐ์ ๋ง๋ฃ๊ฐ ์ด๋ ค์ |
์ฐธ๊ณ ์๋ฃ
[๋์] - ๊ทธ๋ฆผ์ผ๋ก ๊ณต๋ถํ๋ TCP/IP ๊ตฌ์กฐ
'๐ฉโ๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
REST, RESTful API, REST ์ ์ฝ ์กฐ๊ฑด (0) | 2024.01.24 |
---|---|
[๋คํธ์ํฌ] SOP, CORS (0) | 2024.01.23 |
[๋คํธ์ํฌ] LAN๊ณผ WAN (0) | 2024.01.11 |
[๋คํธ์ํฌ] ๋คํธ์ํฌ ๊ตฌ์ฑ ๊ธฐ๊ธฐ - ๋ฌผ๋ฆฌ ๊ณ์ธต, ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต, ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต (0) | 2024.01.11 |
์ปดํจํฐ ๋คํธ์ํฌ๋ ๋ฌด์์ผ๊น? | ํ๋กํ ์ฝ, OSI 7 Layer, TCP/IP, ์บก์ํ์ ๋น์บก์ํ (1) | 2024.01.09 |