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
๋ฐ˜์‘ํ˜•