JWT

์žฅ์—ฌ์ง„ยท2022๋…„ 4์›” 7์ผ
0
post-thumbnail

JWT(Json Web Token)์ด๋ž€?๐Ÿ‘€

  • ์ธํ„ฐ๋„ท ํ‘œ์ค€ ์ธ์ฆ ๋ฐฉ์‹
  • ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ DB์— ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ˆ˜๋‹จ(์•”ํ˜ธํ™”-๋ณตํ˜ธํ™”)
  • Header, Payload, Signature๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Œ

1. Header

-ํ† ํฐ์˜ ํƒ€์ž…์ด๋‚˜, ์„œ๋ช… ์ƒ์„ฑ์— ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ €์žฅ

2. Payload

-์‚ฌ์šฉ์ž ๋˜๋Š” ํ† ํฐ์— ๋Œ€ํ•œ property๋ฅผ key-value์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ

iss(Issuer): ํ† ํฐ ๋ฐœ๊ธ‰์ž
sub(Subject): ํ† ํฐ ์ œ๋ชฉ - ํ† ํฐ์—์„œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์‹๋ณ„ ๊ฐ’์ด ๋จ
aud(Audience): ํ† ํฐ ๋Œ€์ƒ์ž
exp(Expiration Time): ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„
nbf(Not Before): ํ† ํฐ ํ™œ์„ฑ ๋‚ ์งœ
iat(Issued At): ํ† ํฐ ๋ฐœ๊ธ‰ ์‹œ๊ฐ„
jti(JWT Id): JWT ํ† ํฐ ์‹๋ณ„์ž (issuer๊ฐ€ ์—ฌ๋Ÿฌ ๋ช…์ผ ๋•Œ ์ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’)

ํ‘œ์ค€ ์ŠคํŽ™ ์™ธ์—๋„ ํ† ํฐ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋” ์ถ”๊ฐ€ ๊ฐ€๋Šฅ!
์ฃผ์˜โ—โ—โ—) ์•”ํ˜ธํ™”๋œ ํ† ํฐ์€ ๋””์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ํฌํ•จXXX

3. Signature

-Signature๋Š” ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฐœ์ธํ‚ค๋กœ๋งŒ ์•”ํ˜ธํ™”๋ฅผ ํ’€ ์ˆ˜ ์žˆ์–ด์„œ ์ž„์˜๋กœ Signature๋ฅผ ๋ณตํ˜ธํ™” ๋ถˆ๊ฐ€๋Šฅ
-๋””์ฝ”๋”ฉ์œผ๋กœ JWT์˜ Header,Payload์ •๋ณด๋Š” ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ •๋ณด ๋ณ€๊ฒฝ ์‹œ ๊ธฐ์กด Signature์™€ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ณด ์กฐ์ž‘์€ ๋ถˆ๊ฐ€๋Šฅ

JWT์˜ ์žฅ์ ๐Ÿ‘

  1. ํ† ํฐ ์ž์ฒด๊ฐ€ ์ธ์ฆ๋œ ์ •๋ณด๋ผ์„œ ์„ธ์…˜ ์ €์žฅ์†Œ์™€ ๊ฐ™์€ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์ˆ˜์ ์ด์ง€ ์•Š์Œ
  2. ์„ธ์…˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š์Œ
  3. Signature๋ฅผ ๊ฐœ์ธํ‚ค ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ง‰์•„๋‘์–ด์„œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณด์•ˆ์„ฑ
  4. ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์ด์šฉ๊ฐ€๋Šฅํ•ด์„œ ๊ณตํ†ต์ ์ธ ์ŠคํŽ™์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ˜น์‹œ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š

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