- ๋ก๊ทธ์ธ ์ ์ฐจ์์ ์ ํํ ์ด๋ฉ์ผ/๋น๋ฒ ์กฐํฉ์ ์ ๋ ฅํ๋์ง ํ์ธํ๋ ๊ณผ์
->๊ฒฐ๊ตญ ๐ฅ validํ user์ธ๊ฐ? ๐ฅ- ์ธ์ฆ์ ์ ํ์ํด? ์ฐ๋ฆฌ ์๋น์ค๋ฅผ ๋๊ฐ ์ฐ๋์ง? ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ถ์ ๊ฐ๋ฅํ๋๋ก!
- ์ธ์ฆ์ ํ์ํ ๊ฒ? ์์ด๋, ์ด๋ฉ์ผ์ฃผ์, ๋น๋ฒ(์๊ฒ ๊ฐ์ฅ ์ค์)
- ๊ทธ๋ผ ๋น๋ฒ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฑด๋ฐ? ๐ฅ ์ํธํ ๐ฅ ์์ผ์!
- ๊ทธ๋ผ ์ํธํ๋ ์ด๋ป๊ฒ? db์ ์ ์ฅํ ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ๐ฅ ํด์ฑ ๐ฅ ํด์ ๋ณต์ํ ์ ์๊ฒ!
- ๋น๋ฐ๋ฒํธ ์ํธํ๋ฅผ ํ ๋ -> ๋จ๋ฐฉํฅ ํด์ฌ๋ฅผ ์!
- ๋จ๋ฐฉํฅ ํด์ฌ? ๐ฅ ๋ณต์์ด ๋ถ๊ฐ๋ฅํ ๐ฅ ๋จ๋ฐฉํฅ ํด์ฌํจ์๋ ์ํธํ์ ์ฉ๋๋ก ์ฌ์ฉ. (ํด์ฌํ ์ด๋ธ ex. python ๋์ ๋๋ฆฌ)
- ๋จ๋ฐฉํฅ ํด์ฌ ๋จ์ ?
-> ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ํด์๊ฐ์ผ๋ก ๋ง๋ค์ด์ ํ๋งคํ๋ ์๋น์ค ์กด์ฌ y
ํด์ฌ๊ฐ์ ์ ์ถํด์ฃผ๋ ์ฌ์ดํธ๋ ์กด์ฌ.. ์ดํด- ๋จ์ ํด์ฌ๊ฐ์ด ํดํน์ ์ฝ๊ฒ ๋ ธ์ถ๋๋๊น ๋ณด์์ฑ ์ด ํ์ํด!
-> ์ด๊ฑธ ๋ณด์ํ๊ณ ์ ์ ๋ ฅํ ๋น๋ฒ + ๋ฌธ์์ด(salt) ํฉ์ณ์ ํด์ฑํด์ ์ด ํด์๊ฐ์ ์ ์ฅ!- salting & keystretching ๋ง ๊ทธ๋๋ก ์๊ธ์น๊ณ ๋๋ฆฐ๋ค ๊ทธ๊ฒ๋ ์ฌ๋ฌ๋ฒ !!!
๐ Bcrypt ๐
- Salting & KeyStretching ๋ฅผ ์ฝ๊ฒ ํด์ฃผ๋ ๋ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋ค์ํ ์ธ์ด ์ง์, ์ฌ์ฉํธํด์ ์ฝ๊ฒ ์ ์ฉ ๊ฐ๋ฅ.
๐ ์ธ๊ฐ Authorization ๐
- ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์์ฒญ ๋ณด๋ด๋ฉด ์ธ์ฆ๊ณผ์ ๊ฑฐ์ณ์ ๐ฅ ํ์ธ๋ ์ฌ์ฉ์ ๐ฅ ๊ฐ ๋ง๋์ง ํ์ธํ๋ ๊ณผ์ .
(์ด๋ฏธ ๋ก๊ธด ๋ ์ ์ ์ธ์ง ํ์ธํ๋ ๊ณผ์ !)- ์ ๊น! HTTP์ ๊ฐ์ฅ ์ค์ํ ํน์ง?
request / response ์์ฒญ๊ณผ ์๋ต
statelessํ ์ฑ์ง(=์ ์ฅํ์ง ์๋ ์ฑ์ง)- http๋ statelessํ๋ฐ, ์๋ฒ์์ ์์ฒญ์ ๋ฐ์ผ๋ฉด ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ ์ํ์ธ์ง ์ด๋ป๊ฒ ์ ์ ์์ฐ?
-> ๋งค http์์ฒญ๋ง๋ค ๐ฅ headers ๐ฅ๋ฅผ ํ์ฉํด (authorization์ด๋ผ๋ key์ ๋ด์!) ์ฌ์ฉ์๊ฐ ๐ฅ ์ธ์ฆ์ ์ฐจ๋ฅผ ๊ฑฐ์น ์ฌ์ฉ์ ๐ฅ ์์ ์ฆ๋ช ํ๋ ์ ๋ณด๋ฅผ ๋ด์์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ.
**client <--------------> server**
๐ฅ JWT (Json Web Token) ๐ฅ
์ด๋ฉ์ผ/๋น๋ฒ์ ๊ธฐ์ ํ์ฌ ์ธ์ฆ๋ ์ฌ์ฉ์์๊ฒ ๋ฐํํด์ฃผ๋ ์ ์ด์จ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํํํ ํ ํฐ
1. ์๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ง์๋จ.
2. ์๊ฐ ์์ฉ์ ์ด๋ค.(ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์ฒด์ ์ผ๋ก ์ง๋๊ณ ์๋ค. ex. ํ ํฐ ๊ธฐ๋ณธ์ ๋ณด, ์ ๋ฌํ ๋ด์ฉ, ์ ์ ์ ๋ณด ๋ฑ)
3. ๋ ๊ฐ์ฒด ์ฌ์ด์์ ์ฝ๊ฒ ์ ๋ฌ ๋ ์ ์๋ค. (ex. http ํค๋์ ๋ฃ์ด์ ์ ๋ฌ ๊ฐ๋ฅ, url ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ ๊ฐ๋ฅ)
(ํ์ฌ)
1. client๊ฐ ์๋ฒ์ http์์ฒญ(๋ก๊ทธ์ธ)ํ๋ฉด,
2. ์ ์ ์ ๋ณด ํ์ธ ํ ์๋ฒ์ secret key(my_settings.py)๋ฅผ ํ์ฉํด jwt๋ฅผ ์์ฑ ๋ฐ jwt๋ฅผ ํ๋ก ํธ์ ๋ณด๋
3. ํ๋ก ํธ์์ jwt๋ฅผ ๋ธ๋ผ์ฐ์ (๋ก์ปฌ ์คํ ๋ฆฌ์ง)์ ์ ์ฅํ๊ณ
4. jwt๋ฅผ ํฌํจํ http๋ฅผ ์์ฒญ(ํค๋์ ๋ด์์!) ๋ฐฑ์๊ฒ~!
5. ๋ฐฑ์์ jwt์ signature ๋ถ๋ถ์ ํ์ธ ํ, ํด๋น ์ ์ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค! ํ์ธ ํ ์ ์ ์ ์ ๋ณด๊ฐ ์ผ์นํ๋ฉด!!
7. payload๋ถ๋ถ์ ๋ด์์ http ์๋ต! ์๋ฃ~!
* ๊ทธ๋ผ ์๊น์ ๋จ์ ํด๊ฒฐ ์ด๋ป๊ฒ?
-> ์๋ฒ๊ฐ ์ฌ๋ฌ๊ฐ. ๊ฐ ํด๋น ์๋ฒ์์ ๋๊ฐ์ secret key๋ฅผ ๊ณต์ ํ๋ฉด๋จ -> ๊ทธ๋ผ ๊ณ์ ๋๊ฐ์ ๊ฐ์ ํ์ธํ ์ ์๋๊ฑฐ๋๊น!
๐ JWT ์ฅ์ ?
JWT์ ๋์ ๋ฒ์ฉ์ฑ, ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ, ํ์ํ ๊ฐ์ ์์ฒด ํฌํจํ ์ ์๋ ์ฑ์ง ๋๋ฌธ์ ๋ง์ ๊ณณ์์ JWT๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ , ์์ผ๋ก ๋ ๋ง์ ๊ณณ์์ ์ฌ์ฉํ ์ ์์ ๊ฒ์ด๋ค. ํนํ MSA์์ ์๋น์ค ๊ฐ ํต์ ์ ๊ถํ ์๋น์ค์์ ์์กด์ฑ์ ์ค์ผ ์ ์์ด ์๋ฒ์ ์๋ฒ ๊ฐ ํต์ ์ ๋งค์ฐ ์ ์ฉํ๋ค.
๐ JWT ๋จ์ ?
๋จ์ ์ผ๋ก๋ ์ฌ์ฉ์์ ๋ํ ๊ถํ์ด๋ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ JWT๋ฅผ ์๋ก ๋ฐ๊ธํด์ผ ํ๋ฉฐ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ JWT์ ํฌ๊ธฐ๊ฐ ์ปค์ง ์ ์๋ค. JWT์ ํค๋๋ ํ์ด๋ก๋๋ ๋์ฝ๋ฉ(Decoding)ํ๋ฉด ๋ฐ๋ก ๋ด์ฉ์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ JWT์ ๋ชจ๋ ๊ฐ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ๊ณต๊ฐ๋๋ค. ์ธ๋ถ์ ๋
ธ์ถ๋์ด์๋ ์๋๊ฑฐ๋ ๋ฏผ๊ฐํ ๊ฐ์ด ๋
ธ์ถ๋ ์ ์์ด ๋ณด์ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์๋ ๋ด์ ์ด ์๋ค.
๋๋ฌด ๊น์ฐํ ์ ๋ฆฌ