JiwonDev

HTTP #9 ์„ธ์…˜-์ฟ ํ‚ค, JWTํ† ํฐ

by JiwonDev

๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ์ฒ˜๋Ÿผ ์ƒํƒœ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ์œ„ํ•ด ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ฟ ํ‚ค์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋„ฃ๋Š”๋‹ค๋ฉด ์ค‘๊ฐ„์— ๊ฐ€๋กœ์ฑ„์„œ(intercept) ์ •๋ณด๊ฐ€ ํƒˆ์ทจ/์œ ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค.

์ฟ ํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค ํ•œ๋“ค, ์•”ํ˜ธํ™”๋œ ์ฟ ํ‚ค๋ฅผ ํ•œ๋ฒˆ ํƒˆ์ทจ๋‹นํ•˜๋ฉด ํ‰์ƒ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ทธ๋ž˜์„œ ์›น ์„œ๋ฒ„์— 'Session ์ €์žฅ์†Œ'๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ดํ›„์— ๋‚˜์˜จ ๋ฐฉ์‹์ธ JWT ํ† ํฐ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณด์ž.

 

์ฐธ๊ณ ๋กœ ๋ฐ์ดํ„ฐ ๊ด€์ ์—์„œ ๋ณด๋Š” ๋ฌผ๋ฆฌ์ ์ธ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Cookie : ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‘๋‹ต์š”์ฒญ์— ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ
  • Storage : ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ. ์ฟ ํ‚ค์ฒ˜๋Ÿผ ์ž๋™์œผ๋กœ ์‘๋‹ต์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Session : ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ €์žฅ์†Œ, ์œ ํšจ๊ธฐ๊ฐ„์ด ์—†๋Š” Session Cookie๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉ
  • Token : ์ธ์ฆ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด. JSON ๊ฐ™์€ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ Base64๋กœ ์•”ํ˜ธํ™”ํ•œ ๊ฒƒ์ด๋‹ค.
    โžก ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ € LocalStorage์— ํ† ํฐ๊ฐ’ ์ €์žฅํ•˜๊ณ , Static ๋ณ€์ˆ˜๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

# Session๊ณผ Cookie

์„œ๋ฒ„์˜ ์„ธ์…˜์„œ์žฅ์†Œ๋ฅผ ์ด์šฉํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒ ์„ธ์…˜Key(JSessionID)๋ฅผ ์ฟ ํ‚ค๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

HttpSession ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์„ธ์…˜์ €์žฅ์†Œ๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ธ์ฆ์ ˆ์ฐจ๋ฅผ ๋ฐŸ์•„ ๋กœ๊ทธ์ธํ•˜๊ฒŒ ๋œ๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด HTTP POST๋กœ [ID, PW ์ •๋ณด]๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•œ๋‹ค.
  2. ์„œ๋ฒ„์—์„œ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•œ๋‹ค.
    โžก ์ธ์ฆ์— ์„ฑ๊ณตํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž๋ฐ์ดํ„ฐ๋ฅผ HttpSession์— ์ €์žฅํ•˜๊ณ  ์„ธ์…˜ID๋ฅผ ๋ฐœํ–‰ํ•œ๋‹ค.
  3. ์ธ์ฆ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ์„ธ์…˜ID(JSessionID)๋ฅผ ์‘๋‹ต์— ๋„ฃ์–ด ๋ณด๋‚ธ๋‹ค.
  4. ์ดํ›„ ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜์ฟ ํ‚ค์— ์žˆ๋Š” JSessionID๋ฅผ ์š”์ฒญ์— ํ•จ๊ป˜ ๋ณด๋‚ด์„œ ๋กœ๊ทธ์ธ๋˜์—ˆ์Œ์„ ์ฆ๋ช…ํ•œ๋‹ค.
  5. ์„œ๋ฒ„์—์„œ๋Š” ์‚ฌ์šฉ์ž ์š”์ฒญ์— JSessionID๊ฐ€ ์žˆ๋‹ค๋ฉด ์„ธ์…˜์ €์žฅ์†Œ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๊ณ , ์š”์ฒญ์„ ํ—ˆ๋ฝํ•ด์ค€๋‹ค.
    โžก ๋ชจ๋“  Controller์— ์„ธ์…˜๊ฒ€์ฆ์„ ๋„ฃ์œผ๋ฉด ๋ฒˆ๊ฑฐ๋กญ๋‹ค. ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ด์šฉํ•ด ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜์ž.

@ Session์˜ ์žฅ๋‹จ์ 

  • ์žฅ์  : ์„œ๋ฒ„์—์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋…ธ์ถœ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ 1 : JSessionID๋ฅผ ํƒˆ์ทจํ•ด๋ฒ„๋ฆฌ๋Š” ์„ธ์…˜ ํ•˜์ด์žฌํ‚น์„ ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ 2: ์„ธ์…˜์€ ๊ณ„์†ํ•ด์„œ ์Œ“์ธ๋‹ค. ์ด๋Š” ์„œ๋ฒ„์˜ ์ €์žฅ์†Œ๋ฅผ ๊ณ„์† ์ฐจ์ง€ํ•˜๊ณ , ์„œ๋ฒ„์—์„œ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธด๋‹ค.
    โžก ์„ธ์…˜๊ฐ’์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๊ธฐ์— HTTP์˜ ๋ฌด์ƒํƒœ์„ฑ, ๋น„์—ฐ๊ฒฐ์„ฑ์— ์–ป๋Š” ์„œ๋ฒ„ Scale-Out์˜ ์žฅ์ ์„ ์žƒ๋Š”๋‹ค.

 


# HTTP Authentication ์ œ์–ด ํ—ค๋” - Basic

HTTP๋Š” ๋‹ค๋ฅธ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก WWW-Authenticate ์™€ Authoization ์ œ์–ด ํ—ค๋”๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” Authorization ํ—ค๋”์— ์ธ์ฝ”๋”ฉ ๋ฌธ์ž์—ด(* ์•”ํ˜ธํ™” ๋œ ๊ฒƒ์ด ์•„๋‹˜)์„ ์ „์†กํ•œ๋‹ค.
    โžก [ username+":"+password ] ๊ฐ’์„ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ [ Basic YWxhZGRpbjP... ] ์œผ๋กœ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ๋‹ค.
  • ์„œ๋ฒ„๋Š” ํ•ด๋‹น ๊ฐ’์„ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์ฝ์–ด๋“ค์ด๊ณ , 401 Unauthorized ๋ฐœ์ƒ ์‹œ WWW-Authenticate์— ์‹คํŒจ์ด์œ ๋ฅผ ์‘๋‹ตํ•œ๋‹ค.

์ถœ์ฒ˜ : MDN Web Docs

 

 

# HTTP Authentication ์ œ์–ด ํ—ค๋” - Bearer

Bearer๋Š” ์ง๊พผ, ์šด๋ฐ˜์ธ์„ ์˜๋ฏธํ•œ๋‹ค. JWT์™€ ๊ฐ™์€ ํ† ํฐ ์ธ์ฆ ๋ฐฉ์‹์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

  • ๋กœ๊ทธ์ธ ์‹œ [๋กœ๊ทธ์ธํ•˜๋Š” ์„œ๋ฒ„ or ๋‹ค๋ฅธ ์ธ์ฆ์„œ๋ฒ„]๋กœ ๋ถ€ํ„ฐ Token(์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด)์„ ์‘๋‹ต ๋ฐ›๋Š”๋‹ค.
  • ์ดํ›„ ์š”์ฒญ์‹œ Authentication ํ—ค๋”์— Token ๊ฐ’์„ ๋„ฃ์–ด ๋ณด๋‚ธ๋‹ค.
  • ์„ธ์…˜ ์ •๋ณด๊ฐ€ ํ† ํฐ ์ž์ฒด์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค. โžก ๋ฌด์ƒํƒœ HTTP ์š”์ฒญ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. (์„œ๋ฒ„ ์„ฑ๋Šฅ๊ณผ ๋ณด์•ˆ์ด ๋›ฐ์–ด๋‚˜๋‹ค)

 


# Token - JWT (Json Web Token)

JWT๋Š” ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ์ธ์ฝ”๋”ฉ ์‹œํ‚จ ํ•œ ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•œ๋‹ค.

์„œ๋ฒ„์— ์‘๋‹ต ๋ฐ›์„ ๋•Œ์—๋Š” Body์— ๋ฐ›๊ณ , ์ดํ›„ Authorization ํ—ค๋”์—[ Bearer <token value> ]๋กœ ๋„ฃ์–ด ๋ณด๋‚ธ๋‹ค.

Token์—๋Š” ์„œ๋ฒ„์˜ ๋น„๋ฐ€ํ‚ค๋กœ ๋งŒ๋“  ์ „์ž์„œ๋ช…์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๊ทธ ์™ธ์˜ ๋ฐ์ดํ„ฐ๋Š” ์•”ํ˜ธํ™” ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค.

๋งŒ๋“ค์–ด์ง„ ํ† ํฐ(์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด)์€ HTTP ํ—ค๋”์˜ Authorization์— ์ ์–ด์„œ ๋ณด๋‚ธ๋‹ค.

Encoded Header + "." + Encoded Payload + "." + Verify Signature
  • Token : ์ธ์ฆ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด. JSON ๊ฐ™์€ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฒƒ์ด๋‹ค.
    โžก ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ € LocalStorage์— ํ† ํฐ๊ฐ’ ์ €์žฅํ•˜๊ณ , Static ๋ณ€์ˆ˜๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

  • Header์—๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹(alg), ๋ฐ์ดํ„ฐ ์œ ํ˜•ํƒ€์ž…(typ)๋“ฑ์„ ํฌํ•จํ•œ๋‹ค.
  • Payload๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์— ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ์ด๋‹ค. (์‚ฌ์šฉ์ž์˜ ID์ •๋ณด, ์œ ํšจ๊ธฐ๊ฐ„๋“ฑ์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค)
  • Verify Signature๋Š” [Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ Heaer+Payload] ์™€ ๋น„๋ฐ€ํ‚ค๋กœ ๋งŒ๋“  ์•”ํ˜ธํ™”๋œ ์ „์ž์„œ๋ช…์ด๋‹ค.

Payload์•ˆ์— ์žˆ๋Š” ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ํด๋ ˆ์ž„(Claim)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. "sub": "12345" ์ด๋Ÿฐ ๊ฒƒ๋“ค

 

 

  • ํ† ํฐ Payload์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ(Claim)๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

 

 

์„ธ์…˜๊ณผ ๋‹ค๋ฅธ์ ์€, JWT๋Š” ์„œ๋ฒ„์—์„œ ์„ธ์…˜์ €์žฅ์†Œ๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๊ฐ๊ฐ์˜ ์š”์ฒญ์„ ๋ณ„๊ฐœ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • Header์™€ Verify Signature๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ Payload๋Š” ์•”ํ˜ธํ™”๋œ๋‹ค.
    โžก ์ด Payload์•ˆ์— ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ์— ํ•„์š”ํ•œ ์ •๋ณด(์ด๋ฆ„,ID)๊ฐ™์€๊ฒŒ ๋‹ค ํฌํ•จ๋˜์–ด์žˆ๋‹ค.
  • ๋‹ค๋งŒ ์„ธ์…˜์— ๋น„ํ•ด ์ „์†กํ•˜๋Š” ๊ธ€์ž์ˆ˜๊ฐ€ ํ›จ์”ฌ ๊ธธ์–ด ๋„คํŠธ์›Œํฌ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

 

์ธ์ฆ์ ˆ์ฐจ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค.
  2. ์„œ๋ฒ„์—์„œ๋Š” JWT์˜ ๊ณ„์ •์ •๋ณด๋ฅผ ์ฝ๊ณ  ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ  ID๊ฐ’์„ ๋ถ€์—ฌํ•ด Payload์— ๋„ฃ๋Š”๋‹ค.
    โžก JWT ํ† ํฐ์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•˜๊ณ  Payload๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ Access Token์„ ์‘๋‹ต์— ๋„ฃ์–ด๋ณด๋‚ธ๋‹ค.
    โžก ๊ทธ๋ฆฌ๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ๋Š” Header์™€ ์ „์ž์„œ๋ช… Verify Signature๋ฅผ Access Token์— ๋„ฃ์–ด์ค€๋‹ค.
  3. ์‚ฌ์šฉ์ž๋Š” Access Token์„ ์ €์žฅํ•œ ํ›„, ์ธ์ฆ์ด ํ•„์š”ํ•œ ์š”์ฒญ์„ ํ•  ๋•Œ๋งˆ๋‹ค ํ† ํฐ์„ ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค.
  4. ์„œ๋ฒ„์—์„œ๋Š” ํ† ํฐ์˜ Verify Signature๋ฅผ ๋น„๋ฐ€ํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์กฐ์ž‘์—ฌ๋ถ€, ์œ ํšจ๊ธฐ๊ฐ„์„ ํ™•์ธํ•œ๋‹ค.
  5. ์„œ๋ช…๊ฒ€์ฆ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด Payload๋ฅผ ๋””์ฝ”๋”ฉํ•˜์—ฌ ํ† ํฐ์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฝ์–ด๋“ค์ธ๋‹ค.

ํ† ํฐ์—์„œ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์“ด๋‹ค.

 

 

@ ํ† ํฐ(JWT)์˜ ์žฅ๋‹จ์ 

  • ์„ธ์…˜/์ฟ ํ‚ค์™€ ๋‹ค๋ฅด๊ฒŒ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”์—†๊ณ , ์„œ๋ฒ„์—์„œ ๋น„๋ฐ€ํ‚ค ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์Œ๋˜๊ธฐ์— ๊ฐ„ํŽธํ•˜๋‹ค.
    โžก ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ ์„ธ์…˜์ €์žฅ์†Œ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ท€์ฐฎ์€ ์ž‘์—…์ด ํ•„์š”์—†๋‹ค. Scale-Out์ด ์‰ฌ์›Œ์ง„๋‹ค.
  • ๋ฐœ๊ธ‰ํ•œ ํ† ํฐ์„ ๋‹ค๋ฅธ ์ธ์ฆ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. (=ํ† ํฐ ๊ธฐ๋Šฅ์˜ ํ™•์žฅ์ด ์‰ฝ๋‹ค.)
    โžก ์˜ˆ๋ฅผ ๋“ค์–ด Facebook, Google์—์„œ ๋ฐœ๊ธ‰ํ•œ ํ† ํฐ์„ ์ด์šฉํ•ด์„œ ๋‚ด ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•˜๋Š” OAuth2๋“ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๊ฒฐ๊ตญ ์š”์ฒญ์— ์‹ค์–ด์„œ ๋ณด๋‚ด์•ผํ•˜๊ธฐ์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ธฐ ํž˜๋“ค๊ณ , ๋„คํŠธ์›Œํฌ ๋น„์šฉ์˜ ๋‚ญ๋น„๊ฐ€ ์ƒ๊ธด๋‹ค.
  • Payload๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • JWT์— ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์† ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ํ† ํฐ ์ž์ฒด๋ฅผ ํ›”์น˜๋ฉด ๋‹ต์ด์—†๋‹ค.
    โžก ๊ทธ๋ž˜์„œ Access Token์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์งง๊ฒŒํ•˜๊ณ , Refresh Token์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
    โžก Refresh Token์€ AccessToken์„ ๋ฐ›๊ธฐ์œ„ํ•œ ํ† ํฐ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ํƒˆ์ทจ๋ฅผ ๊ฐ์ง€ํ–ˆ์„ ๋•Œ Refresh Token ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜์—ฌ ํŠน์ • ์„ธ์…˜์„ ๋ฉˆ์ถ”๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณดํ†ต ์œ ํšจ๊ธฐ๊ฐ„์„ 1์‹œ๊ฐ„/30์ผ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ทธ๋ƒฅ AccessToken๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ดํŠธ๋„ ์žˆ๊ธดํ•˜๋‹ค. (github๋“ฑ)

 

# ์„ธ์…˜/์ฟ ํ‚ค vs ํ† ํฐ(JWT)

์„ธ์…˜/์ฟ ํ‚ค ๋ฐฉ์‹์€ ๋งค๋ฒˆ SessionId๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ธ์…˜ ์ €์žฅ์†Œ์—์„œ ์ฐพ์•„์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋‹ค.

๋˜ํ•œ ์„œ๋ฒ„์—์„œ ๊ณตํ†ต๋œ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ์˜ ์„ธ์…˜ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

 

 

 

2021.12 ์ถ”๊ฐ€๋‚ด์šฉ 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ