๐ก ์ธ์ ๊ณผ JWT๋ก ๋ํ๋๋ Web ์ ์ธ์ฆ ๋ฐฉ์์ ๋ํด ํ์!
๋ ธ์ ์์ ๋ณด๊ธฐ
๐ ์์ฝ
- ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ๊ณผ ํ ํฐ ๊ธฐ๋ฐ ์์ฆ ์์คํ ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
- ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ
- ์๋ฒ ์ธก์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ธฐ์ต
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ
- ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์๋ฒ์ ๋ด์๋์ง ์๋๋ค. ์ฆ statelessํ๋ค.
๐ง๏ธ ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ
์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ๊ฐ๋
- ๊ธฐ์กด์ ์ธ์ฆ ์์คํ ์ ์๋ฒ ๊ธฐ๋ฐ์ ์ธ์ฆ ๋ฐฉ์์ผ๋ก, ์๋ฒ ์ธก์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ ๋ฐฉ์์ด๋ค.
- ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด ์ธ์ ์ ์ ์งํด์ผ ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ, ๋๋ DB ๋ฑ์ ํตํด ๊ด๋ฆฌํ๋ค.
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด → ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ณ์ํด์ ์ ์งํ๊ณ , ์ด ์ ๋ณด๋ฅผ ์๋น์ค์ ์ด์ฉํ๋ค๋ ์ ์์ Stateful ์๋ฒ๋ผ๊ณ ํ ์ ์๋ค.
- Ex) ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์, ์ธ์ ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํด๋๊ณ ์๋น์ค ์ ๊ณต ์ ์ฌ์ฉํ๋ค.
์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋์ ๊ณผ์
- ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ด ๋ค์ด์จ๋ค.
- ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ์๋ฒ๊ฐ ์ ์ ์ธ์ ์ ๋ง๋ค๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ DB์ ์ ์ฅํ๋ค.
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ธ์ ID๋ฅผ ๋ณด๋ธ๋ค.
- ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ์ธ์ ์ ID๋ง ์ฟ ํค์ ์ ์ฅํ๊ฒ ํ๋ค.
- ์ธ์ ๋ฐ์ดํฐ๊ฐ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฏ๋ก, ํ์ฅ ์ ๋ชจ๋ ์๋ฒ๊ฐ ์ ๊ทผํ ์ ์๋๋ก ๋ณ๋์ ์ค์ ์ธ์ ๊ด๋ฆฌ ์์คํ ์ด ํ์ํ๋ค.
- ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ ์๊ท๋ชจ ์์คํ ์์๋ ์ฌ์ ํ ๋ง์ด ์ฌ์ฉ๋์ง๋ง, ์๋ฒ๋ฅผ ํ์ฅํ๊ธฐ ์ด๋ ต๋ค๋ ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค.
์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋ฌธ์ ์
- ์ธ์
- ์ธ์ (Session)์ด๋, ์ฌ์ฉ์๊ฐ ์ธ์ฆ์ ํ ๋, ์๋ฒ๊ฐ ์ ์ฅํ๊ณ ์๋ ์ ๋ณด์ด๋ค.
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ์ธ์
์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ → ๋ก๊ทธ์ธ ์ค์ธ ์ฌ์ฉ์๊ฐ ๋์ด๋ ๊ฒฝ์ฐ ์๋ฒ์ RAM์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ์ ์๋ค.
- ์ด๋ฅผ ํผํ๊ธฐ ์ํด DB์ ์ ์ฅ์ ํ๊ธฐ๋ ํ์ง๋ง, ์ด ์ญ์ DB์ ๋ฌด๋ฆฌ๋ฅผ ์ค ์ ์๋ค.
- ํ์ฅ์ฑ
- ์ฌ์ฉ์๊ฐ ๋์ด๋๊ฒ ๋๋ฉด ๋ ๋ง์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋๋ฆฌ๊ฑฐ๋, ์ปดํจํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฑ์ ์๋ฒ๋ฅผ ํ์ฅํด์ผ ํ๋ค.
- ์ธ์ ์ ์ฌ์ฉํ๋ฉด, ์ธ์ ์ ๋ถ์ฐ์ํค๋ ์์คํ ๋ํ ์ค๊ณํด์ผ ํ์ง๋ง ์ด ๊ณผ์ ์ด ๋งค์ฐ ์ด๋ ต๊ณ ๋ณต์กํ ๊ฒ
- ์ค์ ์ธ์ ๊ด๋ฆฌ ์์คํ ์ด ์์ผ๋ฉด, ์์คํ ํ์ฅ์ ์ด๋ ค์์ด ์๊ธด๋ค.
- ์ค์ ์ธ์ ๊ด๋ฆฌ ์์คํ ์ด ์ฅ์ ๊ฐ ์ผ์ด๋๋ฉด, ์์คํ ์ ์ฒด๊ฐ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
- CORS(Cross-Origin Resource Sharing)
- ์น ์ดํ๋ฆฌ์ผ์ด์
์์ ์ธ์
์ ๊ด๋ฆฌํ ๋, ์์ฃผ ์ฌ์ฉ๋๋ ์ฟ ํค๋ ๋จ์ผ ๋๋ฉ์ธ ๋ฐ ์๋ธ ๋๋ฉ์ธ์์๋ง ์๋ํ๋๋ก ์ค๊ณ๋์ด ์๋ค.
- ๋ฐ๋ผ์ ์ฟ ํค๋ฅผ ์ฌ๋ฌ ๋๋ฉ์ธ์์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋ก์ด ๊ฒ
๐ก ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ๊ฐ๋
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์, ์ธ์ฆ ๋ฐ์ ์ฌ์ฉ์๋ค์๊ฒ ํ ํฐ์ ๋ฐ๊ธํ๊ณ → ์๋ฒ์ ์์ฒญ ์ ํค๋์ ํ ํฐ์ ํจ๊ป ๋ณด๋ด ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๋ฐฉ์์ด๋ค.
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์์๋, ๋์ด์ ์ฌ์ฉ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ๋ ์ธ์ ์ ์ ์งํ์ง ์๊ณ , ํด๋ผ์ด์ธํธ ์ธก์์ ๋ค์ด์ค๋ ์์ฒญ๋ง์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ๋ค.
- ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ๊ณผ ๋ฌ๋ฆฌ, ์ํ๋ฅผ ์ ์งํ์ง ์๋ Stateless ํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ๋์ ๊ณผ์
- ์ฌ์ฉ์๊ฐ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธ์ ํ๋ค.
- ์๋ฒ ์ธก์์ ํด๋น ์ ๋ณด๋ฅผ ๊ฒ์ฆํ๋ค.
- ์ ๋ณด๊ฐ ์ ํํ๋ค๋ฉด, ์๋ฒ ์ธก์์ ์ฌ์ฉ์์๊ฒ Signed ํ ํฐ์ ๋ฐ๊ธํ๋ค.
- Signed๋ ํด๋น ํ ํฐ์ด ์๋ฒ์์ ์ ์์ ์ผ๋ก ๋ฐ๊ธ๋ ํ ํฐ์์ ์ฆ๋ช ํ๋ Signature๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ์ด๋ค.
- ํด๋ผ์ด์ธํธ ์ธก์์ ์ ๋ฌ๋ฐ์ ํ ํฐ์ ์ ์ฅํด๋๊ณ , ์๋ฒ์ ์์ฒญํ ๋๋ง๋ค ํด๋น ํ ํฐ์ ์๋ฒ์ ํจ๊ป ์ ๋ฌํ๋ค.
- ์ด๋, HTTP ์์ฒญ ํค๋์ ํ ํฐ์ ํฌํจ์ํจ๋ค.
- ์๋ฒ๋ ํ ํฐ์ ๊ฒ์ฆํ๊ณ → ์์ฒญ์ ์๋ตํ๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ ์ ์ฅ์
- ๋ฌด์ํ์ฑ(Stateless) & ํ์ฅ์ฑ(Scalability)
- ํ ํฐ์ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๋ฏ๋ก, ์๋ฒ๋ ์์ ํ Statelessํ๋ค.
- ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ํ์ฅํ๊ธฐ์ ๋งค์ฐ ์ ํฉํ๋ค.
- ๋ง์ฝ, ์ฌ์ฉ์ ์ ๋ณด๊ฐ ์๋ฒ ์ธก ์ธ์
์ ์ ์ฅ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ฅผ ํ์ฅํ์ฌ ๋ถ์ฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ฉด, ํด๋น ์ฌ์ฉ์๋ ์ฒ์ ๋ก๊ทธ์ธ์ ํ๋ ์๋ฒ์๋ง ์์ฒญ์ ๋ฐ๋๋ก ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
- ํ์ง๋ง, ํ ํฐ์ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ค ์๋ฒ๋ก ์์ฒญ์ด ์๋ ์๊ด ์๋ค!
- ๋ณด์์ฑ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋, ๋ ์ด์ ์ฟ ํค๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฏ๋ก → ์ฟ ํค ์ฌ์ฉ์ ์ํ ์ทจ์ฝ์ ์ด ์ฌ๋ผ์ง๊ฒ ๋๋ค.
- ํ์ง๋ง, ํ ํฐ ํ๊ฒฝ์ ์ทจ์ฝ์ ์ด ์กด์ฌํ ์ ์์ด, ์ด์ ๋๋น๊ฐ ํ์ํ๋ค.
- ํ์ฅ์ฑ(Extensibility)
- Extensibility ๋ ๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ์ฌ์ฉ๋๋ ๋ถ์ผ์ ํ์ฅ์ฑ์ ์๋ฏธํ๋ค.
- Scalability : ์์คํ ์ ํ์ฅ์ฑ์ ์๋ฏธ
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ
์ ๊ฒฝ์ฐ, ํ ํฐ์ ์ ํ์ ์ธ ๊ถํ๋ง ๋ถ์ฌํ์ฌ ๋ฐ๊ธ ๊ฐ๋ฅ
- OAuth์ ๊ฒฝ์ฐ, Facebook, Google๊ณผ ๊ฐ์ ์์ ๊ณ์ ์ ์ด์ฉํด ๋ค๋ฅธ ์น ์๋น์ค์์ ๋ก๊ทธ์ธ์ด ๊ฐ๋ฅ
- ์ฌ๋ฌ ํ๋ซํผ ๋ฐ ๋๋ฉ์ธ
- ์๋ฒ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ
์ ๋ฌธ์ ์ ์ค ํ๋์ธ CORS ํด๊ฒฐ ๊ฐ๋ฅ
- ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค ๊ท๋ชจ ํ์ฅ๋๋ฉด → ์ฌ๋ฌ ๋๋ฐ์ด์ค ํธํ ๋ฐ ๋ ๋ง์ ์ข ๋ฅ์ ์๋น์ค ์ ๊ณต
- ํ ํฐ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ด๋ค ๋๋ฐ์ด์ค๋ ๋๋ฉ์ธ์์๋ ํ ํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์งํํ ํ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๐ ์ฐธ๊ณ ์๋ฃ
'Web > Concept' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] JWT(JSON Web Token) (0) | 2022.05.22 |
---|---|
[Web] Authentication & Autorization (0) | 2022.05.22 |
[Web] ์ฟ ํค(Cookie) & ์ธ์ (Session) (0) | 2022.05.22 |
[Web] JWT(JSON Web Token) (0) | 2022.01.13 |