Daily/Today I Learned
210305_TIL (JWT, ํ ํฐ๊ธฐ๋ฐ์ธ์ฆ)
joooing
2021. 3. 6. 20:47
๋ฐ์ํ
๐ ์ค๋ ๋ฐฐ์ด ๊ฒ
JWT, ํ ํฐ๊ธฐ๋ฐ์ธ์ฆ
Express ์๋ฒ์์ JWT๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ ์ธ์ฆ์ ํ๋ ์์คํ ์ ๊ตฌํํด๋ดค๋ค. ์ฟ ํค, ์ธ์ ์ ์ด์ด์ ๋ ์๋ก์ด ๊ฐ๋ ์ด๋ผ ๊ฐ๋ ์ ๋ํ ์ ๋ฆฌ๊ฐ ์ฐ์ ๋์ด์ผํ ๊ฒ ๊ฐ์์ ์ ๋ฆฌ๋ถํฐํ๋๋ฐ ๋ง์ ์ฝ๋๋ก ์์ฑํ๋ ค๋๊น ๋ค์ ๋ค์ฃฝ๋ฐ์ฃฝ์ด ๋๋ ๋๋์ด์๋ค. ์ ํํ ์ด๋ค ์ฐจ์ด์ ์ด ์๋์ง๋ ์ข ๋ ํ์คํ ํด๋ฌ์ผ๊ฒ ๋ค. ์ผ๋จ ์๋ฒ๋ถ๋ถ์ ๋จผ์ ๊ตฌํํ๋๋ฐ, ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ID์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋์ง ํ์ธํ๋ค. ์กด์ฌํ ๊ฒฝ์ฐ, Access Token๊ณผ Refresh Token์ ๋ชจ๋ ์์ฑํด์ ์๋ต์ผ๋ก ๋๋ ค์คฌ๋ค. ์ด๋๋ ์ํธํ๋ ์ํ๋ก ๋ฐํํด์คฌ๋ค. jsonwebtoken ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ฑฐ์ ์ต์ ๋ง ์ค์ ํด์ฃผ๋ ์์ด์๋ค. AccessToken์ ๋ํ ์์ฒญ์ด ์์ ๋๋ ํ ํฐ์ ํด์ํด ์๋์ ๋ฌธ์์ด๋ก ๋๋ฆฌ๊ณ , ์ ํจ์ฑ์ ํ๋จํด์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ต์ ๋๋ ค์ฃผ๋๋ก ํ๋ค. Refresh Token์ ๋ํ ์์ฒญ์ด ์์ ๋๋ ์ ํจํ ๋๋ง ์๋ก์ด Access Token๊ณผ ์ ์ ๊ฐ ์์ฒญํ ์ ๋ณด๋ฅผ ๋๋ ค์ฃผ๋๋ก ํ๋ค. ์๋ฒ ๊ตฌํ์ ๋๋ด๊ณ ํด๋ผ์ด์ธํธ ๋ถ๋ถ์ ๋ง๋ค์๋๋ฐ, state์์ ์ ์ ์ ๋ณด๋ค์ ๊ด๋ฆฌํ๊ณ , ๋ก๊ทธ์ธ ์ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ํ๋ฉด์ ๋ ๋๋งํ๋๋ก ํ๋ค. ๋ก๊ทธ์ธ ํ์๋ Access Token ๊ณผ Refresh Token ์์ฒญ์ ๋ณด๋ผ ์ ์๋๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค.
CSS ๋ณต์ต
flex์ ์ต์ํด์ ธ์ ๋งจ๋ flex๋ง ์จ์๋๋ฐ grid์ ๋ํด์ ์ ๋๋ก ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋ฌผ๋ก flex๋ก๋ ๊ฑฐ์ ํด๊ฒฐํ ์ ์๊ธฐ๋ ํ์ง๋ง, ํ์์ ๋ฐ๋ผ์ ํ์ฉํ ์๋ ์์ ๊ฒ ๊ฐ๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
Web Token ์ ๋ฌ๊ณผ์
1. ํด๋ผ์ด์ธํธ : ์ฌ์ฉ์๊ฐ ID, PW๋ฅผ ์ ๋ ฅ (POST token)
2. ์๋ฒ : DB์์ ํด๋น ID, PW๊ฐ ์ผ์นํ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ๋ณ (์๋ค๋ฉด JWT ๋ฐํ, ์๋ค๋ฉด error)
3. ํด๋ผ์ด์ธํธ : ์ ๋ฌ๋ฐ์ JWT๋ฅผ ์ด๋๊ฐ์ ์ ์ฅ (Cookies, Local Storage, Session Storage..)
4. ํด๋ผ์ด์ธํธ : API ์์ฒญ์ ํค๋์ JWT ํจ๊ป ์ ๋ฌ
5. ์๋ฒ : ์ ํจํ JWT์ธ์ง ํ๋ณ ํ Response
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ Typescript
โ๏ธ OAuth
๋ฐ์ํ