[ TIL ] [ ์ •๊ทœ๊ณผ์ • : ์ฃผํŠน๊ธฐ์ฃผ์ฐจ ] JWTํ† ํฐ (.env๋กœ SECRET_KEY์ฒ˜๋ฆฌ๊นŒ์ง€!)

2023. 9. 11. 15:15ใ†0. TiL ( Today I Learned )

๊ฒŒ์‹œ๊ธ€์„ ๋งŒ๋“œ๋Š” LEVEL3์˜ ํŒ€๊ณผ์ œ์—์„œ ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์ด ์„ฑ๊ณตํ•˜์˜€์„ ๋•Œ, JWT ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๋„๋ก ํ–ˆ๋‹ค.

๋‚˜๋Š”, JWTํ† ํฐ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์“ฐ๊ธฐ๋งŒ ํ•˜๊ณ  JWT๋ฅผ secret_key๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•˜๋‹ค.  ์•ˆ์ „ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” JWT์˜ ๋ชฉ์ ์„ ์ƒ์‹ค ํ•œ๊ฒƒ์ด๋‹ค. 

์—„์—ฐํžˆ ๋งํ•˜์ž๋ฉด secret_key ํ™œ์šฉํ•ด์•ผ์ง€ ๋ผ๋Š” ์ฃผ์„๋งŒ ๋‹ฌ์•„๋†“๊ณ  ์ •์ž‘ . envํด๋”์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์“ฐ์ง€ ์•Š์•˜๋‹ค.

๊ทธ๋ ‡๋‹ค. ๋‚˜๋Š” ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ž๋‹ค(?) ์ฝ”๋“œ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์— ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ์—ˆ๊ณ , ๋ช…์‹œ๋งŒ ํ•˜๋ฉด ์–ด์ฐŒ ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ. env ํด๋” ์•ˆ์— ๋“ค์–ด๊ฐ€ ๋ณด๋‹ˆ ์ •๋ง ๋”ฐ๋กœ ํ‘œ๊ธฐ๋œ ๋ถ€๋ถ„์ด ์—†์—ˆ๋‹ค.

๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ํ”ผ๋“œ๋ฐฑ๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ํ•จ๊ป˜ ์•Œ๋ ค์ฃผ์…จ๊ณ  Til๋กœ ์ถ”๊ฐ€ ์ •๋ฆฌํ•˜๋ฉด์„œ ์‚ดํŽด๋ณด๋‹ˆ,. envํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ host.pass, user ๋“ฑ์„ secret์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , import ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ( *๊ด€๋ จํ•œ ์ฐธ์กฐ ๋ธ”๋กœ๊ทธ : https://www.daleseo.com/js-dotenv/ 


๋ณธ๊ฒฉ์ ์œผ๋กœ .env์„ ํ†ตํ•ด JWTํ† ํฐ์„ SECRET_KEY๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์„ ์„ค๋ช…ํ•˜๊ธฐ ์•ž์„œ, ํ•œ ๋ฒˆ ๋” JWT์˜ ๊ฐœ๋…์„ ์ƒ๊ธฐํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž!

 

* ์˜ค๋Š˜ ์ •๋ฆฌํ•œ JWT์˜ ๊ฐœ๋…์€ ์•„๋ž˜์˜ node.js๊ฒŒ์‹œํŒ ๋งํฌ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ!

2023.09.11 - [3. Node.js] - [ Node.js ์ˆ™๋ จ์ฃผ์ฐจ 1 (1-0)] JWT(Json Web Token)

 

[ Node.js ์ˆ™๋ จ์ฃผ์ฐจ1 (1-0)] JWT(Json Web Token)

JWT(Json Web Token) JWT(Json Web Token)์€ ์›น ํ‘œ์ค€์œผ๋กœ์จ, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๋„์›€์„ ์ฃผ๋Š” ์›น ํ† ํฐ(Web Token)์ด๋‹ค. JSON ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ณ  ๊ฒ€์ฆํ• 

sa-growth-diary.tistory.com

 


[ JWTํ† ํฐ .env๋กœ SECRET_KEY ์ฒ˜๋ฆฌํ•˜๊ธฐ ]

 

[. env ] ํŒŒ์ผ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ •์˜ํ•ด์ค€๋‹ค.

// .env

SECRET_KEY="1234" // * ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ„๊ณณ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ด์ค€๋‹ค.

[. env ]์— ์ €์žฅ๋œ SECRE KEY๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.

   const token = jwt.sign(
      {
        userId: user.userId
      },
      'process.env.SECRET_KEY', 
      //   'process.env.SECRET_KEY' ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
      
      
      const decodedToken = jwt.verify(token, 'process.env.SECRET_KEY'); 
                        // process.env.SECRET_KEY๋Š” .env ํŒŒ์ผ์— ์ €์žฅ๋œ ๋น„๋ฐ€ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ 
    const userId = decodedToken.userId;

* ๋ฐฐํฌ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋  ์ˆ˜ ์žˆ์Œ์œผ๋กœ [ app.js ]์—์„œ import๊นŒ์ง€ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์ข‹๋‹ค.

import dotenv from 'dotenv'
dotenv.config();

* ํ„ฐ๋ฏธ๋„์— ๋ช…๋ น์–ด๋ฅผ install๊นŒ์ง€ ํ•ด์ฃผ๋ฉด, package.jason์— ["dotenv": "^16.3.1"] ์™•๊ฐ™์ด ๋ฒ„์ „์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

yarn add dotenv

 


 

??? ์š”์ฆ˜ ๋‚ดํ‘œ์ •..

์ง€๊ธˆ ์ง€์ณค๋‚˜์š”? 

( ์˜ํ˜ผ์—†์Œ .. ) ์•„๋‹ˆ์š” ...? ? ? ? 

... ์˜ค๋Š˜ 6์‹œ ๊ธฐ์ƒ ์„ฑ๊ณตํ–ˆ๋‹ค..

๊ทผ๋ฐ ๋ฉ๋•Œ๋ฆฌ๊ธฐ 1์‹œ๊ฐ„ํ–ˆ๋‹ค..

์–ด์จ‹๋“  ๊ฐ“์ƒ์„ฑ๊ณต? 

๋‚ด์ผ๋„ ๋„์ „ ์•„์ž์ž..