[๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปTA9 ์ธํ„ด 44์ผ์ฐจ]๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ, ํ† ํฐ&JWT

Goofiยท2023๋…„ 8์›” 31์ผ
0

๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์˜ ์ดํ•ด

ํšŒ์›๊ฐ€์ž…

email, password, ...๋ฅผ ์ „๋‹ฌ ๋ฐ ์„œ๋ฒ„์—์„œ ์›ํ•˜๋Š” ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค.

const ์ดํƒœํ˜• = {
   email : 'spdhsrnvl123@naver.com',
   password : "dlxogud12",
   contury : 'korea',
   job : 'developer',
}

๋กœ๊ทธ์ธ

๋กœ๊ทธ์ธ ํ•  ๋•Œ ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ๊ฐ€์ง€๊ณ  ์œ ์ €๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.
โ†’ ์„œ๋ฒ„๋Š” ์œ ์ €์—๊ฒŒ ํ† ํฐ์„ ์ฃผ๋ฉด์„œ ์œ ์ €์•ผ ์ด ํ† ํฐ์„ ๊ฐ€์ง€๊ณ  ์•ž์œผ๋กœ ์š”์ฒญ์„ ํ•ด๋ผ

ํ† ํฐ

  • ์„œ๋ฒ„๊ฐ€, ๊ฐ๊ฐ์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ˆ„๊ตฐ์ง€ ์ •ํ™•ํžˆ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก, ์œ ๋‹ˆํฌํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ์•”ํ˜ธํ™” ๋ฐ์ดํ„ฐ.
  • ์œ ์ € ๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅํ•ด์•ผ, ์œ ์ €์˜ ๊ถŒํ•œ์— ๋งž๋Š” ์ •ํ™•ํ•œ ๊ธฐ๋Šฅ์„ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค.
    ( ์‚ฌ์šฉ์ž ๊ตฌ๋ถ„ ๋ฐ ์ •๋ณด ์œ ์ถœ๋ฐฉ์ง€ )

๋กœ๊ทธ์ธ๊ณผ์ •

1)๋กœ๊ทธ์ธ

eamil, password๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ๋ณด๋‚ด๋ฉด ํšŒ์›๊ฐ€์ž… ํ–ˆ์„ ๋•Œ์˜ ๋ณด๋‚ธ ์ด๋ฉ”์ผ์ธ 'spdhsrnvl123@naver.com' ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ์ธ'reset123' ๋ฐ์ดํ„ฐ๋ฅผ ๋– ์˜ค๋ฅด๊ฒŒ ๋œ๋‹ค.

2)๋กœ๊ทธ์ธ ์ดํ›„

header์— ํ† ํฐ์„ ๋„ฃ๊ณ  ์š”์ฒญ์„ ํ•œ๋‹ค.

์˜ˆ์‹œ) ์œ ํŠœ๋ธŒ์—์„œ ๋กœ๊ทธ์ธ ํ•œ ์ƒํƒœ์—์„œ ๊ฒ€์ƒ‰์ฐฝ์— '์กฐ์ฝ”๋”ฉ'์ด๋ผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ† ํฐ์„ ํฌํ•จํ•ด์„œ ๋ณด๋‚ด์ค€๋‹ค.

ํ•ด๋‹น ํ† ํฐ์€ ์š”์ฒญํ—ค๋” ์ฟ ํ‚ค์•ˆ์— ์žˆ์œผ๋ฉฐ ์•Œ์•„ ๋ณผ ์ˆ˜ ์—†๋Š” ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ € ์žˆ๋‹ค.

ํ† ํฐ & JWT

ํ† ํฐ์ด๋ž€

  • ๋””์ง€ํ„ธ๋ฏผ์ฆ ๊ฐ™์€ ๊ฒƒ
  • ์‹ ์› ์ฆ๋ช…

ํ† ํฐ ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ์˜ ํ๋ฆ„

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ ์š”์ฒญ
  2. ์„œ๋ฒ„ ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ์ „๋‹ฌ
  3. ํด๋ผ์ด์–ธํŠธ ํ† ํฐ ๋ณด๊ด€
  4. ํด๋ผ์ด์–ธํŠธ๋Š” ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์š”์ฒญ

์‹ค์ œ ์„œ๋น„์Šค์—์„œ์˜ ๊ตฌ์กฐ

  • ๋กœ๊ทธ์ธ ํ›„ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€
  • ์ž๋™ ๋กœ๊ทธ์ธ

JWT(JSON Web Token)

ํ† ํฐ์ด๋‹ค.

JWT๊ฐ€ ํ† ํฐ์ด ๋งž๋Š”๋ฐ ๋ญํ•˜๋Š” ๊ธฐ์ˆ ์ธ๊ฐ€?
RSP ๊ธฐ์ˆ ํ‘œ์ค€ ๊ทœ๊ฒฉ์—์„œ ์ •์˜๋˜์–ด์žˆ๋‹ค.
RSP - ๊ธฐ์ˆ ํ‘œ์ค€ ๊ทœ๊ฒฉ์ด๋‹ค.

JWT ์•ˆ์—๋Š” ๋ฌด์—‡์ด ๋“ค์–ด ์žˆ์„๊นŒ?

HEADER.PAYLOAD.SIGNATURE

  • ์•”ํ˜ธํ™” ๊ทœ์น™
  • ํ† ํฐ ํƒ€์ž…

ํ˜•ํƒœ)

  "alg" : "HS256",
  "typ" : "JWT"

PAYLOAD

  • ๋ฐ์ดํ„ฐ(ํด๋ ˆ์ž„)
  • ์‹ค์ œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.
  • ํŒจ์Šค์›Œ๋“œ ๋„ฃ์œผ๋ฉด ์•ˆ๋œ๋‹ค.
    ํ˜•ํƒœ)
  "sub" : "1234567890",
  "name" : "John Doe",
  "iat" : 1516239022

SIGNATURE

  • ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ

ํ˜•ํƒœ)

HMACSHA256(
	base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    MY_SECRET_KEY_1234!@#
) secret base64 encoded
profile
์˜ค๋Š˜๋ณด๋‹จ ๋‚ด์ผ์ด ๊ฐ•ํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค!!๐Ÿง‘๐Ÿปโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€