๐ ์ธ์ฆ์ ์ ํ์ํ๊ฐ?
- ์ฐ๋ฆฌ ์๋น์ค๋ฅผ ๋๊ฐ ์ฐ๋ฉฐ ์ด๋ป๊ฒ ์ฌ์ฉํ๊ณ ์๋์ง, ์ถ์ ์ด ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํด์ ํ์ํ๋ค.
- ์ธ์ฆ์ด ํ์ํ ๊ฒ๋ค์ id, email, pw ๋ฑ๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
- ๊ทธ์ค์์๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ password๋ผ๊ณ ํ ์ ์๋ค.
๐๊ฐ์ธ ์ ๋ณด ๋ณดํธ๋ฒ์ ๊ฐ์ธ์ ๋ณด์ ์ํธํ์ ๋ํด์ ๋ค์๊ณผ ๊ฐ์ด ๊ท์ ํ๊ณ ์๋ค.
: ๋น๋ฐ๋ฒํธ, ๋ฐ์ด์ค์ ๋ณด, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ๊ณผ ๊ฐ์ ์ฃผ์ ๊ฐ์ธ์ ๋ณด๊ฐ ์ํธํ ๋์ง ์๊ณ , ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ์์คํ ์ ์ ์ฅ๋๊ฑฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด์ ์ ์ก ๋ ๊ฒฝ์ฐ, ๋ ธ์ถ ๋ฐ ์ใ๋ณ์กฐ ๋ฑ์ ์ํ์ด ์์ผ๋ฏ๋ก ์ํธํ ๋ฑ์ ์์ ํ ๋ณดํธ์น๊ฐ ์ ๊ณต๋์ด์ผ ํ๋ค.
"์ํธํ"๋ ๊ฐ์ธ์ ๋ณด ์ทจ๊ธ์์ ์ค์ ๋๋ ํด์ปค์ ๊ณต๊ฒฉ์ผ๋ก ๋ฑ์ผ๋ก ์ธํด ๊ฐ์ธ์ ๋ณด๊ฐ ๋น์ธ๊ฐ์์๊ฒ ์ ใ๋ ธ์ถ ๋๋๋ผ๋ ๊ทธ ๋ด์ฉ ํ์ธ์ ์ด๋ ต๊ฒ ํ๋ ๋ณด์๊ธฐ์ ์ด๋ค. ์ฆ, ์์คํ ์ด ์ธํฐ๋ท์์ ๋คํธ์ํฌ์ ์์นํ๋ ๊ฒฝ์ฐ๋ ์์ธ์ ์ธ ๊ฐ์ธ์ ๋ณด ํญ๋ชฉ์ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ตญ๊ฐ์์ ๊ถ๊ณ ํ๋ ์์ฉ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ๊ฐ์ธ์ ๋ณด๋ฅผ ์ํธํํ๋๋ก ๋ฒ์ ์ผ๋ก ์๊ตฌํ๊ณ ์์ต๋๋ค.
๋น๋ฐ๋ฒํธ๋ ์ด๋ป๊ฒ ๊ด๋ฆฌํด์ผ ํ๋๊ฐ?
- Database์ ์ ์ฅ ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ํด์ฑํ์ฌ ๋ณต์ํ ์ ์๋๋ก ํ๋ค.
๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ id pkํค๊ฐ ์๊ณ ๊ฐ๊ฐ์ ์นผ๋ผ๋ค์ด ์๋๋ฐ, ์ํธํ๋ฅผ ํ๋ฉด ์ ์ฅ์ด ๋ ๋ ์ํธํ ํด์ ์ค๋ฅธ์ชฝ ์ฒ๋ผ ์ ์ฅ์ด ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ํธํ ํ์ง ์๊ณ ์ ์ฅ์ ํ๋ฉด, ๋น๋ฐ๋ฒํธ๊ฐ ๋ค๋ค์ด ๋ ์ ์๋ ์ฐ๋ ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ค๊ณ๊ฐ ๋์ด์๋ค.
๋์ ์ ๊ฐ์ธ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, SSL์ ์ ์ฉํ์ฌ ์ํธํ https ๋ณด์์ ์ ๊ณตํด์ฃผ๋ ๋จ์ฒด๊ฐ ์๋๋ฐ, ๋ฐ๋ ์ฌ๋๊ณผ ๋ณด๋ด๋ ์ฌ๋๋ง ํด๋ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๊ฐ์ธ์ ๋ณด๋ฅผ ํด์ฑ ํ์ฌ ๋ณต์ ํ ์ ์๋๋ก ํ๋ค.
๐ ์ํธํ๋ ์ด๋ป๊ฒ ํ ๊น์?
๐ ๋จ๋ฐฉํฅ ํด์ฌ๋ผ๋ ๊ฒ์ ๋ฌด์์ผ๊น?
- ๋ณธ๋ ํด์ฌ(hash)ํจ์๋ ์๋ฃ๊ตฌ์กฐ์์ ๋น ๋ฅธ ์๋ฃ์ ๊ฒ์, ๋ฐ์ดํฐ์ ์๋ณ์กฐ ์ฒดํฌ๋ฅผ ์ํด์ ์ฐ์ด์ง๋ง, ๋ณต์์ด ๋ถ๊ฐ๋ฅํ ๋จ๋ฐฉํฅ ํด์ฌํจ์๋ ์ํธํ์ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
- (MDS, SHA-1)(๋์ ๋ณด์์ทจ์ฝ), SHA-256๋ฑ์ด ์๋ค.
- '1234'๋ฅผ SHA0256 ํด์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
:03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4 - ๊ฒฐ๊ณผ๋ง ๋ด์๋ ๋น์ฅ ์๋ณ์ด ๋ถ๊ฐ๋ฅ ํ๋ฏ๋ก ์๋ฒฝํด ๋ณด์ธ๋ค.
- ํ์ง๋ง ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก '1234'๋ฅผ ๋ค์ ํด์ฑํ๋ฉด ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ถ๋๋ค.
- ์ฆ ๋ณต์์ด ๋ถ๊ฐ๋ฅํ ํ์ชฝ์ผ๋ก๋ ์ํธํ๊ฐ ๋๋๋ฐ ๋ค๋ฅธ ํ์ชฝ์์๋ ์ํธํ๊ฐ ์๋๋ ํด์ฌ๋ก ์ํธํ๋ฅผ ์งํํ๋ค.
- ์ด์๊ฐ์ ํ์ ์ ์ด์ฉํด์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ํด์๊ฐ์ผ๋ก ๋ง๋ค์ด์ ํ๋งคํ๋ ์๋น์ค์ธ ๋ ์ธ๋ณด์ฐ ํ ์ด๋ธ์ด๋ผ๋ ์ฌ์ดํธ๋ ์กด์ฌํ๋ค.List of Rainbow Tables
- ์ด๊ฐ์ ํ์ ์ ๋ณด์ํ๊ณ ์ salting๊ณผ Key Stretching์ด๋ผ๋ ์์ด๋์ด๊ฐ ์๊ฒจ๋ฌ๋๋ฐ, ๋น๋ฐ๋ฒํธ์ ์์๋ก ์์ฑํ ๋ฌธ์์ด(Salt)๋ฅผ ํฉ์ณ์ ํด์ฑํ์ฌ ์ด ํด์๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ํธ๋ ํ ์ด๋ธ ๊ตฌ์กฐ๋ก ์ ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ํธ๋ผ๋ ๊ฒ์ ๋ฐฑํผ์ผํธ๋ก ๋ชป์ฐพ๋ ๊ฒ์ ์๋๋ค.
๐ SALTING & KeyStrtching?
์๋ ๊ทธ๋๋ก ์๊ธ์น๊ณ ๋๋ฆฐ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
- ๋จ์ ํด์ฌ๊ฐ์ด ํดํน์ ์ฝ๊ฒ ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์ Salting์ด๋ผ๋ ์์ด๋์ด๊ฐ ์๊ฒจ๋ฌ๋ค.
- ์ ๋ ฅํ ๋น๋ฐ๋ฒํธ์ ์์๋ก ์์ฑํ ๋ฌธ์์ด(Salt)๋ฅผ ํฉ์ณ ํด์ฑํด์ ์ด ํด์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๋ฌผ๋ก ์ด๋ ๋น๊ต๋ฅผ ์ํด ํด์ ๊ฐ๊ณผ ์๊ธ(Salt)๊ฐ์ ๊ฐ์ด ์ ์ฅํด์ผํ๋ค.
- ์ฌ๊ธฐ์ ํด์ปค๊ฐ ํจ์ค์๋ ๋ฌด์์ ๋์ ์ ํตํด ํด์๊ฐ์ ๊ณ์ฐํ๋๋ฐ ํ์ํ ์๊ฐ์ ๋ํญ ๋๋ฆฌ๊ธฐ ์ํด Salting ๋ฐ ํด์ฑ์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ์๋ณธ ๊ฐ์ ์ ์ถํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ ๊ฒ์ด (Key Stretching)ํค ์คํธ๋ ์นญ์ด๋ค.
- ํ์๊ฐ์ ์ ์งํํ ๋ ์ํธ๊ฐ์ ๋ถ์ฌ์ ์งํํ๋๋ฐ, ๋ง์ฝ ์ํ ์ ํ๋ฉด ๋์ค๋ ๊ฐ + ์ํธ = ์ํธํ ๋๋ค.
๐ bcrypt
๐ Salting & Key Stretching ๋ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- bcrypt๋ ์์ ๋งํ ๊ฐ๋ ๋ค์ ์ค์ ๋ก ์ ์ฉํ๊ธฐ ํธํ๊ฒ ํด์ฃผ๋ ๋ํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๊ณ ์์ผ๋ฉฐ, ์ฌ์ฉ์ด ๊ฐํธํ์ฌ ์ฝ๊ฒ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- bcrypt๋ hash๊ฒฐ๊ณผ๊ฐ์ ์๊ธ๊ฐ๊ณผ ํด์๊ฐ ๋ฐ ๋ฐ๋ณตํ์๋ฅผ ๊ฐ์ด ๋ณด๊ดํ๊ธฐ ๋๋ฌธ์ ๋น๋ฐ๋ฒํธ ํด์ฑ์ ์ ์ฉํ๋๋ฐ ์์ด DB์ค๊ณ๋ฅผ ๋ณต์กํ๊ฒ ํ ํ์๊ฐ ์๋ค.
- bcrypt๋ฅผ ํตํด ํด์ฑ๋ ๊ฒฐ๊ณผ ๊ฐ(Digest)์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํจ์ค์๋ ๊ฐ๋ง ์ ์ฅํ๋ ๊ฒ ๋ฟ ์๋๋ผ ์ํธ๊ฐ๋ ๊ฐ์ด ์ ์ฅํด์ ๋น๊ต๋ฅผ ๊ฐ์ด ํ๋ค.
๐ ์ธ๊ฐ๋ ๋ฌด์์ผ๊น?
ํด๋น ์ ์ ๊ฐ ์์ฒญํ๋ ํด๋น ๊ถํ์ด ์๋ ์ง ํ์ธํ๋ ์ ์ฐจ์ด๋ค.
ex1) ์ฟ ํก์ด๋ผ๋ ๋ฐฐ์ก์๋น์ค๋ฅผ ์ด์ฉํ๋๋ฐ, ์ฃผ๋ฌธํ๊ธฐ๋ฅผ ๋น๋ก๊ทธ์ธ ์ํ์์ ํ๋ฉด, ๋ก๊ทธ์ธ ํ๋ผ๊ณ ์๋ฆผ์ด ๋ํ๋๋ ๊ฒ -> ๊ถํ์ ๋ํ ํ๊ฐ๊ฐ ํ์ํ๋ค.
ex2) ๊ฒ์๊ธ์ ์ข์์๋ฅผ ๋๋ฅด๋ฉด -> ๋๊ฐ ๋๋ ๋์ง ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ถํ ํ๊ฐ๊ฐ ํ์ํ๋ค.
์ ๋๊ฐ์ง ๊ณผ์ ์ด ์ธ๊ฐ๋ผ๊ณ ์๊ฐ ํ ์ ์๋ค.
โญโญStatelessํ ์ฑ์งโญโญ
๐ ๋ฌด์ํ = Stateless
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ด๊ณ์์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
Stateless ๊ตฌ์กฐ์์ server๋ ๋จ์ํ ์์ฒญ์ด ์ค๋ฉด ์๋ต์ ๋ณด๋ด๋ ์ญํ ๋ง ์ํํ๊ณ , ์ธ์ ๊ด๋ฆฌ๋ client์๊ฒ ์ฑ ์์ด ์๋ค. ์ด๋ฌํ stateless๊ตฌ์กฐ๋ client์์ ์ธ์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ํ์๊ฐ ์์ผ๋ฏ๋ก, ์ด๋ฌํ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์๋๋ค. ํ์ง๋ง ํ์์ ๋ฐ๋ผ์ ์ธ๋ถ DB์ ์ ์ฅํ์ฌ ๊ด๋ฆฌ ํ ์ ์๋ค.
- ์น์๋ฒ ํต์ (http)ํน์ฑ์ ์ฌ์ฉ์(๋ธ๋ผ์ฐ์ )์ ์ด์ ์ํ client(์ฟ ํค) or Server(์ธ์ ) ์ ๋ณด๋ฅผ ๊ธฐ๋กํ์ง ์๋ ์ ์์ด๋ ์๋ฏธ์ด๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋๋ง๋ค ์ฐ๊ฒฐํ๊ณ ๋ฐ๋ก ๋์ด๋ฒ๋ฆฌ๋ ๋ฐฉ์์ด๋ค.
- ์ฅ์ : ์๋ฒ์ ํ์ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋์ ํธ๋ํฝ์ด ๋ฐ์ ํด๋ ๋์ฒ๋ฅผ ์์ํ๊ฒ ํ ์ ์๋ค.
- ๋จ์ : ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋์ ์ผ๋ก Stateful๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์๋ชจ๋๋ค.(๋งค๋ฒ ์์ฒญํ ๋๋ง๋ค ์์ ์ ๋ถ๊ฐ์ ๋ณด๋ฅผ ์ค์ผํ๊ธฐ ๋๋ฌธ์)
- ๋ํ์ ์ธ Stateless ํ๋กํ ์ฝ์ UDP์ HTTP๊ฐ ์๋ค.
๐ Stateless ํต์ ์ ์์
- ํ ๋ธ๋ฌ์ ํ๋งคํ๋ ์๋ฒ A
- ๋์ฒด๊ฐ ๊ฐ๋ฅํ ์๋ฒ B, C
- ํ ๋ธ๋ฌ๋ฅผ ์ฌ๋ ค๋ client D
๐ตD : ํ
๋ธ๋ฌ๋ฅผ ๊ตฌ๋งคํ๋ ค ํฉ๋๋ค.
*๐ฉโA *: ํ
๋ธ๋ฌ ์ปค์คํ
์ ๊ณจ๋ผ์ฃผ์ธ์.(server๋ ์๋ฌด๊ฒ๋ ๊ธฐ์ตํ์ง ์๋๋ค.)
๐ตD *: *ํ
๋ธ๋ฌ๋ฅผ ๊ตฌ๋งคํ๋ ค๊ณ ํฉ๋๋ค. ๋๊ป์ ํ์์, ๋ฐ๋๋ ๋ณด๋ผ์, ์์ก์ด๋ ๋ถํ์์ธ ๊ฒ์ผ๋ก ์ฃผ์ธ์.
*๐งโB *: ๋ฐฐ์ก์ ์ด๋๋ก ํด๋๋ฆด๊น์?(์๋ฒ๋ ์๋ฌด๊ฒ๋ ๊ธฐ์ตํ์ง ์๋๋ค.)
๐ตD: ํ
๋ธ๋ฌ๋ฅผ ์ฌ๋ คํฉ๋๋ค. ๋๊ป์ ํ์์, ๋ฐ๋๋ ๋ณด๋ผ์, ์์ก์ด๋ ๋ถํ์์ธ ๊ฒ์ผ๋ก ์ฃผ์ธ์. ๋ฐฐ์ก์ ํ์ฌ๋ก ํด์ฃผ์ธ์.
๐ดC: ๊ฒฐ์ ๋ ๋ฌด์์ผ๋ก ๋์๋๋ฆด๊น์? (์๋ฒ๋ ์๋ฌด๊ฒ๋ ๊ธฐ์ตํ์ง ์๋๋ค.)
๐ตD: ํ
๋ธ๋ฌ๋ฅผ ์ฌ๋ คํฉ๋๋ค. ๋๊ป์ ํ์์, ๋ฐ๋๋ ๋ณด๋ผ์, ์์ก์ด๋ ๋ถํ์์ธ ๊ฒ์ผ๋ก ์ฃผ์ธ์. ๋ฐฐ์ก์ ํ์ฌ๋ก ํด์ฃผ์ธ์.๊ฒฐ์ ๋ ํ๊ธ์ผ๋กํ ๊นจ์.
๐ดC: ๊ฒฐ์ ์๋ฃ ๋์์ต๋๋ค.(์๋ฒ๋ ๋ค์ด์จ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.)
์ฌ๊ธฐ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ(์ํ)์ ์ ์งํ์ง ์๋ ์๋ฒ๋ผ๋ ์ ์ด ํต์ฌ์ด๋ผ๊ณ ํ ์์๋ค. ๋ฌด์ํ๋ ๊ธฐ์กด์ ์๋ฒ๊ฐ ํผ์กํด์ ธ์ ์๋ก์ด ์๋ฒ๋ฅผ ๊ฐ์ ธ๋ค ๋์๋ ๊ธฐ์กด์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ทธ๋๋ก ๊ตฌํํ๊ณ ์ด๋ค๋ฉด, ์ด์ ์ ์ฌ์ฉ์ ์์ฒญ์ด ์ด๋ค์ง์ ๊ด๊ณ์์ด ๊ณ์์ผ์ ์ฒ๋ฆฌ ํ ์ ์๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ํ๊ณ ์ํ๋ ์ต์ข ๋ชฉ์ ์ ์ํด ์ง๋๊ฐ๋ ๊ณผ์ ๋ง๋ค ์ ์ ์ ๋ฌํด์ผํ๋ ๋ด์ฉ์ด ๋ง์์ง๋ค๋ ๊ฒ์ด๋ค. HTTP๋ ์ด ๋ฌด์ํ๋ฅผ ํน์ง์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค.
ํน๋ณํ ์ผ์ด ์๋ค๋ฉด ๋ฌด์ํ๋ฅผ ์งํฅํด์ผํ๋ฉฐ ์ ๋งํ์ํ ๊ฒฝ์ฐ์๋ง ์ํ๋ฅผ ์ ์งํด์ผํ๋ค.
๐ ์ธ๊ฐ๋ ๋ฌด์์ผ๊น?
์ธ๊ฐ Authorization
์๋ฒ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ์ ๊ฒฝ์ฐ, ๋ก๊ทธ์ธ ํ๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ์๊น?
: ๋ฐ๋ก header์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ ํ์ธํ๋ค.์ด ๋ฉํ ์ ๋ณด๋ฅผ ๋ฐ๋ก JSON Web Token ์ผ๋ช 'JWT'๋ผ๊ณ ํ๋ค.
** ๐ฉโ๐ซ HTTP ํน์ ์์**
- ์์ฒญ1 : zoom ๋ก๊ทธ์ธ
- ์๋ต1 : ๋ก๊ทธ์ธ 200 OK!
- ์์ฒญ2 : meeting ์ ์
- ์๋ต2 : meeting ์ ์ OK!
์์ฒญ 1์ ์๋ต 1์์ 200 OK์ Token ๋ฐํํ๋ค.
์์ฒญ 2๋ ๋ฐํ ๋ฐ์ Token๊ณผ ํจ๊ป ์์ฒญ ๋ณด๋ธ๋ค.
์ด ๋ฌด๊ฑฐ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋๋ฐ, ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ฆฌํ์คํธ ํค๋๋ผ๋ ๊ณณ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค๋ค.
ex) ์ฟ ํก ๋ก๊ทธ์ธ -> ํ์๊ฐ์ ์ ์ด๋ฏธ ๋์ด์์ -> ๋ด ์ฅ๋ฐ๊ตฌ๋๋ก ๋ค์ด์ด -> ์ด์ ์ ๋ฆฌํ์คํธ์ ๋ํ ๊ธฐ์ต์ด ์ ํ์์ -> ๋ก๊ทธ์ธ์ ํด๋ ํ๊ฐ๋ฅผ ๋ฐ์์ผ ํ๋ ๊ณผ์ ์์ ๊ณ์ ๋ก๊ทธ์ธ์ ํด์ผํ๋ ๊ณผ์ ์ ํด๊ฒฐํด์ผ ํ๋๋ฐ ๋ฐฉ๋ฒ: ํ ๊ทผ์ ๋ฐํํด ์ฃผ๋ ๊ฒ์ -> ์ ์ ์ ๋ ฅ์ ๋ณด๋ฅผ ํ๋ก ํธ์๋์์ ๋ฐฑ์๋๋ก ๋ฐ์ -> ๋ก๊ทธ์ธ ์ฑ๊ณต -> ์ ์ด์จ ์นํ ํฐ์ ๋ฐ์ -> ์ด ํ ํฐ์ ๋๋ ค๋ฐ์์ ๋ค์ ๋ฆฌํ์คํธ์ ํค๋์ค์ ๋ฃ์ด์ค -> ์ด๋ ๊ฒ ๋ฃ์ด์ฃผ๋ฉด ๋ฐฑ์๋์์ ๋ค์ ๋ฐ์์ ์ฌ ๋ก๊ทธ์ธ์ ํ๋ ๊ฒ์ด ์๋๋ผ ์๊น ๋ก๊ทธ์ธ ์ฑ๊ณตํ๋ ํ ํฐ์ ๋ฐ์์ ์๋ฒ์ ์ ๋ฌ์ ํด์ค (๋ก๊ทธ์ธ ํ๋ ์ฌ๋์ธ์ง ์๋์ง ์ ์ ์์)
So, โญ ์ ์ด์จ ์นํ ํฐ์ด ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค!!!!
๐ JOSON Web Token
- ์์ ๊ทธ๋ฆผ์ JWT ๊ตฌ์กฐ์ด๋ค.
๐ ํค๋์๋ ์ด๋ค ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋๊ฐ? **
1.ํ ํฐ์ ํ์ ๊ณผ ํด์ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋ค.
2.ํด๋์ ๋ด์์ BASE64 ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉํด์ JWT ๊ฐ์ฅ ์ฒซ ๋ถ๋ถ์ ๊ธฐ๋ก๋๋ค.
3. ํด๋๋ฅผ ๋จผ์ ๋ณด๋ฉด **"์ฌ๊ธฐ์ ํ ํฐ์ด ์ ์ด์จ ์นํ ํฐ์ด๋ค." ๋ผ๋ ๊ฒ์ ๋ฃ์ด์ฃผ๊ณ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ํด์ฌํ ๊ฒ์ธ์ง ํค๋์ ์ ๋ณด๋ฅผ ๋ด์ ์ค๋ค.
์์ - {"alg":"HS256","typ":"JWT"}
๐ ๋ด์ฉ(payload)์๋ ์ด๋ค ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๊น?
- ๋ง๋ฃ์๊ฐ์ ๋ํ๋ด๋ exp์ ๊ฐ์ด ๋ฏธ๋ฆฌ ์ ์๋ ์งํฉ์ธ Registered Claim
- ๊ณต๊ฐ์ฉ ์ ๋ณด ์ ๋ฌ์ ๋ชฉ์ ์ผ๋ก ํ๋ Public Claim
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํ์ํ์ ์ฌ์ฉํ๋ Private Claim
- ์์ ์ธ ๊ฐ์ง ์์๋ฅผ ์กฐํฉํด์ฌ ์์ฑํ๋ค BASE64 ์ธ์ฝ๋ฉ์ ํ์ฌ, ๋๋ฒ์งธ ์์๋ฅด ์์นํ๋ค.
์์ - {"user-id": 1,"exp":"1539517391"}
๐ ์๋ช (signature)์๋ ์ด๋ค ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๊น?
- JWT๊ฐ ์๋ณธ ๊ทธ๋๋ก๋ผ๋ ๊ฒ์ ํ์ธํ ๋ ์ฌ์ฉํ๋ ๋ถ๋ถ์ด๋ค.
- ์๊ทธ๋์ฒ๋ BASE64URL ์ธ์ฝ๋๋ header์ payload ๊ทธ๋ฆฌ๊ณ JWT secret(๋ณ๋ ์์ฑ)์ ํค๋์ ์ง์ ๋ ์ํธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ํธํํ์ฌ ์ ์กํ๋ค.(๋ณตํธํ ๊ฐ๋ฅ)
- ํ๋ก ํธ์๋๊ฐ JWT ๋ฐฑ์๋ API ์๋ฒ๋ก ์ ์กํ๋ฉด ์๋ฒ์์๋ ์ ์ก๋ฐ์ JWT์ ์๋ช ๋ถ๋ถ์ ๋ณตํธํ ํ์ฌ ์๋ฒ์์ ์์ฑํ JWT๊ฐ ๋ง๋์ง ํ์ธํ๋ค.
- ๋ง์น ๊ณ์ฝ์์ ์๋ณ์กฐ๋ฅผ ๋ง๊ธฐ์ํด ์๋ก ์ฌ์ธํ๋ ๊ฒ๊ณผ ๊ฐ๋ค๊ณ ๋ณด๋ฉด๋๋ค.
- ์ฃผ์ํ ์ ์ header์ payload๋ BASE64 ์ธ์ฝ๋ฉํ ๊ฒ์ด๋ฏ๋ก (์ํธํํ๋) ๋๊ตฌ๋ ์๋ณธ์ ๋ณผ ์ ์์ผ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ด์์๋ ์๋๋ค.
์ฌ๊ธฐ์์ ์ํธํ๋ ๋ณตํธํ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ ์ ์์ด๋๊ฐ ์ค๋ณต์ด ๋๋ ๋ง๋ ์๋ฒ๊ฐ ์ด์ ๋ก ์ด์ด๋ณธ๋ค. ์ด ์ด์ ๋ก ์ ๊ฐ์ผ๋๊น ์ด ์ด์ ๋ก ์ด์ด์ ๋ณด์์ ๋ ์ด๋ฆฌ๋ฉด ์ฐ๋ฆฌ์๋ฒ์ ๋ฐ๊ธํ ํ ํฐ์ด๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
So, ๋น๊ทผ์์ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ด ์ฟ ํก์์ ์ฌ์ฉ๋๋ฉด x, ์ํฌ๋ฆฟ ํค ๋ง์ด ๊ทธ๊ฒ์ ์ด์ด ๋ณผ ์ ์๋ ๊ฒ์ด๋ค
** ์์ฑ๋ JWT์ ์์**
'DEV' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CodeKata | 01 (0) | 2024.10.20 |
---|---|
HTTP (2) | 2024.10.20 |
React : mapํจ์ ์ ์ฉ์ key props๋ฅผ ๋ถ์ฌํ๋ ์ด์ (0) | 2024.10.20 |
Design : UI ์ปดํฌ๋ํธ ์ข ๋ฅ ๋ฐ ํน์ง (3) | 2024.10.20 |
Map Method ์ดํดํ๊ธฐ (0) | 2024.10.20 |