๐ Authentication & Authorization
Authentication์ ์ธ์ฆ์ด๋ผ๋ ๋ป์ผ๋ก ํน์ ์๋น์ค์ ์ผ์ ๊ถํ์ด ์ฃผ์ด์ง ์ฌ์ฉ์์์ ID, password๋ก ์ธ์ฆ๋ฐ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ฐ๋จํ ๋งํ์๋ฉด ๋ก๊ทธ์ธ์ด๋ค. Authorization์ ์ธ๊ฐ๋ผ๋ ๋ป์ผ๋ก ๋ก๊ทธ์ธ์ ํตํด ํ๋ฒ ์ธ์ฆ์ ๋ฐ์ ์ฌ์ฉ์๊ฐ ์ดํ ์๋น์ค์ ์ฌ๋ฌ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ๋ ๋ก๊ทธ์ธ๋์ด ์์์ ํ์ธ๋ฐ๊ณ ์ฌ์ฉํ๊ฐ๋ฅผ ํด์ค๋ค. ์ฆ, ๋ก๊ทธ์ธ๋ ์ํ๋ฅผ ์ ์ง์์ผ์ฃผ๋ ๊ฒ์ด ์ธ๊ฐ์ด๋ค.
๐ ์ธ์ (Session)
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๊ฒ ๋๋ฉด ์๋ฒ๊ฐ '์ธ์ ํ๋ฑ์ง'๋ผ๋ ๊ฒ์ ์ถ๋ ฅํด ์ธ์ ํ๋ฑ์ง์ ๋ฐ์ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํ๊ณ ๋ฐ์ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋๋์คํฌ,๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค. ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ก ๊ฐ ์ธ์ ํ๋ฑ์ง์ ์ ๋ฐ์ Session ID๋ผ๋ ์ด๋ฆ์ ์ฟ ํค๋ก ์ ์ฅ์ด ๋๊ณ ์ฌ์ฉ์๋ก๋ถํฐ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋ฒ์๊ฒ ์ด Session ID๋ฅผ ์ค์ด๋ณด๋ธ๋ค. ์๋ฒ๋ ๋ฐ์ Session ID์ ์๊น ์ ์ฅํด๋ ๋จ์ ์ธ์ ํ๋ฑ์ง์ ๋ฐ์ด ์ผ์นํ๋ ๊ฒ ์์ผ๋ฉด ์ธ๊ฐ๋ฅผ ํด์ค๋ค.
์ด์ฒ๋ผ Session ID๋ก ์ฌ์ฉ์๊ฐ ์๋ฒ์ ๋ก๊ทธ์ธ๋์ด์์์ด ์ง์๋๋ ์ํ๋ฅผ Session์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ธ์ ์ ๋จ์
- ์ฌ์ฉ์๊ฐ ๋์์ ๋ง์ด ์ ์ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง
- ์๋ฒ ์ฌ๋ถํ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ๋ ์๊ฐ
- ๋ฐ์ดํฐ๋ฅผ ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฃ์ผ๋ฉด ์๋๊ฐ ๋๋ ค์ง
- ์๋ฒ๊ฐ ์ฌ๋ฌ๋์ผ ๋ ๋ก๋๋ฐ๋์ฑ(์์ฒญ์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ)์ผ๋ก ์ธํด ์ธ์ ์ ์ง๊ฐ ์๋จ
๐ JWT (JSON Web Token)
JWT๋ ์ผ์ข ์ ํ์ธ์๋ก ์ฐ๋ฆฌ๊ฐ ์ด๋ค ์น์ฌ์ดํธ์ ๋ก๊ทธ์ธ์ ํด์ ์ฑ๊ณต์ ์ผ๋ก ์ธ์ฆ์ด ์ด๋ฃจ์ด์ง๋ฉด ์๋ฒ๋ ์ฌ์ธ๋ ํ์ธ์(JWT)๋ฅผ ์ฐ๋ฆฌ์๊ฒ ์ ๊ณตํ๋ค. ๊ทธ๋ฌ๋ฉด ์์ผ๋ก ์์ฒญ ๋๋ง๋ค JWT๋ฅผ ์๋ฒ์๊ฒ ๊ฐ์ด ๋ณด์ฌ์ฃผ๋ฉด์ ๊ถํ์ ํ์ธ๋ฐ๋ ๊ฒ์ด๋ค. ์๋ฒ๋ JWT๋ง ํ์ธํด ์ธ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ธ์ DB์ ์ ์ฅํ ํ์๊ฐ ์๋ค.
JWT๋ ์ธ์ฝ๋ฉ ๋๋ ์ํธํ๋ 3๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ .(dot)์ผ๋ก ๊ตฌ๋ถํด ์ด์ด๋ถ์ธ ํํ๋ก ๋์ด ์๋ค.
๊ทธ 3๊ฐ์ง ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- header : ํค๋์ ๋ฐ์ดํฐ๋ฅผ ๋์ฝ๋ฉํ๋ฉด 2๊ฐ์ง ์ ๋ณด๋ฅผ ์ป์ ์ ์๋๋ฐ ํ๋๋ type์ผ๋ก JWT์ ๊ฒฝ์ฐ ํญ์ ์ด ๊ฐ์ JWT์ด๋ค. ๋ค๋ฅธ ํ๋๋ alg๋ก signature ๊ฐ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ(ex. HS256)์ ์๋ฏธํ๋ค. ์ด ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ๊ณ์ฐ๋ ์ ์๋ค.
- payload : ํ์ด๋ก๋์ ๋ฐ์ดํฐ๋ฅผ Base64๋ก ๋์ฝ๋ฉํ๋ฉด JSON ํํ๋ก ๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ ๋ด์ฉ์๋ ๋๊ฐ ๋๊ตฌ์๊ฒ ๋ฐ๊ธํ๋์ง, ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ, ์๋น์ค๊ฐ ๊ณต๊ฐํ๊ธธ ์ํ๋ ๋ด์ฉ ๋ฑ์ด ๋ด๊ฒจ์ ธ ์๋ค.
- signature : header + payload + ์๋ฒ์ ๊ฐ์ถฐ๋์ ๋น๋ฐ ํค๋ฅผ ํฉํด ํค๋์ ์ ์ฅ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ์ํธํํ ๊ฐ์ด๋ค.
=> ๋น๋ฐํค๋ฅผ ์ด์ฉํ์ฌ ๊ณ์ฐํ ๊ฐ์ด ์๋ช ๊ฐ๊ณผ ๊ฐ๊ณ , ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ์ด ์ง๋์ง ์์๋ค๋ฉด ์ธ๊ฐ๋ฅผ ๋ด์ค๋ค.
ํ ํฐ์ ์ด์ฉํ์ฌ ์๋ฒ๋ ์ฌ์ฉ์์ ์ํ๋ฅผ ๋ฐ๋ก ๊ธฐ์ตํด๋ ํ์ ์์ด ๋น๋ฐํค๋ง ์๋ฉด ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ํ ํฐ์ผ๋ก ์ฌ์ฉ์๋ฅผ ํ๋ณํ ์ ์๋ค.
๐ Acess Token & Refresh Token
acess token์ ๋งค๋ฒ ์ธ๊ฐ๋ฐ์ ๋ ์ฐ๋ ์๋ช ์งง์ ํ ํฐ์ผ๋ก, ์๋ช ์ด ๋คํ๋ฉด refresh token์ ์๋ฒ์๊ฒ ๋ณด๋ด DB์ ์ ์ฅ๋ ๊ฐ๊ณผ ์ผ์นํ๋ฉด ์ acess token์ ๋ฐ๊ธํด์ค๋ค. ์ด acess token์ ํ์ทจ ๋นํด๋ ๊ธ๋ฐฉ ๋ง๋ฃ๋๋ค๋ ์ฅ์ ์ด ์๋ค.
refresh token์ access token์ ์ฌ๋ฐ๊ธ๋ฐ์ ๋ ์ฐ๋ ์๋ช ์ด ๊ธด token์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด๊ณ ๋์ ์์๊ฐ์ DB์๋ ์ ์ฅํ๋ฉฐ, DB์์ ์ด token์ด ์ง์์ ธ๋ ์ด์์๋ acess toekn์ด ์์ด ์ฆ๊ฐ์ ์ธ ํผํด๋ ์๋ค. ์ด ๋ ํ ํฐ์ ์ด์ฉํ ๋ฐฉ๋ฒ์ ์ ๊น์ ํผํด๋ ๋ง์ ์ ์์ง๋ง ์์ ํ ์์ ํ ๋ฐฉ๋ฒ์ ์๋๋ค.
๐์ฐธ๊ณ
'CS > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS/Network] TCP์ 3&4-way handshake (0) | 2022.12.28 |
---|