[μƒνƒœμœ μ§€] 🎯 JWTκ°€ λ­”κ°€μš”?

Mec.D's BlogΒ·2022λ…„ 6μ›” 5일
0
post-thumbnail

πŸ“‹ 기술 λ©΄μ ‘ ν™ˆ λ°”λ‘œκ°€κΈ°


⬛ κ°œλ…

πŸ’‘ JWT (Json Web Token)

ꡬ성섀λͺ…
μ–΄λ–»κ²Œ?토큰 μžμ²΄μ— 정보λ₯Ό λ‹΄κ³  μ•”ν˜Έν™”λœ μ„œλͺ…을 μΆ”κ°€ν•œ
ν˜•νƒœλŠ”?JSON 포맷의
🎯Claim 베이슀 ν† ν°μž…λ‹ˆλ‹€.

βœ…οΈ νŠΉμ§•

  1. βœ… HTTP Authorization 헀더에 μ‹€μ–΄ λ³΄λƒ…λ‹ˆλ‹€.
  2. βœ…οΈ .을 κ΅¬λΆ„μžλ‘œ 헀더, νŽ˜μ΄λ‘œλ“œ, μ‹œκ·Έλ„ˆμ³ 3λΆ€λΆ„μœΌλ‘œ κ΅¬λΆ„λ©λ‹ˆλ‹€.
  3. βœ…οΈ 헀더와 νŽ˜μ΄λ‘œλ“œλŠ” base64둜 μΈμ½”λ”©λ©λ‹ˆλ‹€
  4. βœ…οΈ Self-contained : 토큰 μžμ²΄μ— 정보λ₯Ό λ‹΄μ•„ λ³΄λƒ…λ‹ˆλ‹€.

⬛ μž₯점

  1. ⬛ 헀더, νŽ˜μ΄λ‘œλ“œ μ‘°μž‘ μ‹œ μ‹œκ·Έλ„ˆμ³ 검증을 ν†΅κ³Όν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— μœ„λ³€μ‘°λœ μš”μ²­μ„ κ±ΈλŸ¬λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. ⬛ 인증 정보에 λŒ€ν•œ λ³„λ„μ˜ μ €μž₯μ†Œκ°€ ν•„μš”μ—†μŠ΅λ‹ˆλ‹€. (Access 토큰 ν•œμ •)
  3. βœ…οΈ μ„Έμ…˜κ³Ό 달리 μ„œλ²„κ°€ Statelessν•΄ μŠ€μΌ€μΌμ•„μ›ƒμ΄ μš©μ΄ν•©λ‹ˆλ‹€.
  4. βœ…οΈ λͺ¨λ°”일 λ“± μ—¬λŸ¬ ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€μ‘ν•˜κΈ° μš©μ΄ν•©λ‹ˆλ‹€.
  5. βœ…οΈ μ‚¬μš©μž 정보가 ν•„μš”ν•  λ•Œ DB 쑰회λ₯Ό κ±΄λ„ˆλ›Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

βœ…οΈ 단점

  1. βœ…οΈ νŽ˜μ΄λ‘œλ“œλŠ” 제3μžκ°€ μ‰½κ²Œ λ³΅ν˜Έν™”ν•  수 μžˆμ–΄ λ³΄μ•ˆμ΄ ν•„μš”ν•œ 정보λ₯Ό 담을 수 μ—†μŠ΅λ‹ˆλ‹€.
  2. βœ…οΈ 토큰을 νƒˆμ·¨λ‹Ήν•˜λ©΄ λŒ€μ²˜ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
  3. βœ…οΈ νŽ˜μ΄λ‘œλ“œμ— 담은 인증 정보가 λŠ˜μ–΄λ‚ μˆ˜λ‘ 토큰 크기가 컀져 λ„€νŠΈμ›Œν¬ λΆ€ν•˜κ°€ μ»€μ§‘λ‹ˆλ‹€.

⬛ ꡬ쑰

βœ…λͺ…μΉ­μ„€λͺ…
Headerμ•Œκ³ λ¦¬μ¦˜ ν˜•μ‹ (alg), 토큰 μœ ν˜• (typ) 정보 포함
βœ…Payloadμ‹€μ œ μ‚¬μš©ν•  정보 쑰각인 Claim 포함
μ‚¬μš©μž 정보 μ €μž₯
Signature헀더와 νŽ˜μ΄λ‘œλ“œμ˜ 인코딩 κ°’ + Secret Keyλ₯Ό ν•©μΉœ λ’€
μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ 생성해낸 해쉬 κ°’

⬛ Claim

πŸ’‘ Claim

JWTμ—μ„œ μ‚¬μš©ν•˜λŠ” key-value ν˜•μ‹μ„ν•œ ν•œ 쌍의 정보λ₯Ό λ§ν•©λ‹ˆλ‹€.

⬛ Registered Claims
미리 μ •μ˜λœ ν΄λ ˆμž„

βœ…μ’…λ₯˜EngKor
ississuerλ°œκΈ‰μž
subsubject제λͺ©
audaudienceλ°œκΈ‰ λŒ€μƒ
expexpireation time만료 μ‹œκ°„, NumericDate ν˜•μ‹
iatissued Atλ°œκΈ‰μΌμ‹œ
jtiJWI IDJWT 토큰 μ‹λ³„μž, 쀑볡 λ°©μ§€μš© Claim
nbfnot beforeν™œμ„±μΌμ‹œ, nbf 이후 토큰이 ν™œμ„±ν™”λ©λ‹ˆλ‹€.

⬛ Public Claims

μ‚¬μš©μžκ°€ μ •μ˜ν•  수 μžˆλŠ” ν΄λ ˆμž„

⬛ 곡개용 정보λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•©λ‹ˆλ‹€.

⬛ Private Claims
λ‹Ήμ‚¬μžλ“€ 간에 정보λ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ μ‚¬μš©μž 지정 ν΄λ ˆμž„

  • ⬛ 외뢀에 κ³΅κ°œλΌλ„ μƒκ΄€μ—†μ§€λ§Œ ν•΄λ‹Ή μœ μ €λ₯Ό νŠΉμ •ν•  수 μžˆλŠ” 정보듀을 λ‹΄μŠ΅λ‹ˆλ‹€.
profile
기술둜 더 λ‚˜μ€ 미래λ₯Ό λ””μžμΈν•˜λŠ” 개발자 MEC:D μž…λ‹ˆλ‹€

0개의 λŒ“κΈ€