๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ EvoStyleํ”„๋กœ์ ํŠธ/โœ๏ธ TIL

[TIL] ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋ณด๋Š” ํ”„๋กœ์ ํŠธ TIL 17์ผ์ฐจ..

by carrot0911 2025. 5. 7.

๐ŸŒž ์˜ค๋Š˜์€ ์–ด๋–ค ํ•˜๋ฃจ์˜€์ง€..

์˜ค๋Š˜ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๊ฒƒ๋“ค์„ ํ–ˆ๋‹ค.

์˜ค์ „์—๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ž‘์—…ํ•œ ๋‚ด์šฉ๋“ค์„ API ๋ช…์„ธ์„œ์— ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์˜คํ›„์— ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค์ด ๋” ์žˆ์–ด์„œ ๋‚ด์ผ ์˜ค์ „์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ž‘์—…ํ•  ์˜ˆ์ •์ด๋‹ค.

๊ทธ ํ›„์—๋Š” ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ํŒŒํŠธ์— ๋Œ€ํ•œ Valid ๊ฒ€์ฆ ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์ด๊ฑด ๊ทธ๋ƒฅ ์–ด๋…ธํ…Œ์ด์…˜๋งŒ ๋ถ™์ด๋ฉด ๋˜๋Š” ๊ฑฐ๋ผ์„œ ๊ธˆ๋ฐฉ ๋๋‚ฌ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ตœ๋Œ€ ์ฃผ์†Œ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ด๋†“์ง€ ์•Š์€ ๊ฒƒ์ด ๋– ์˜ฌ๋ผ์„œ ์ตœ๋Œ€ ์ฃผ์†Œ ๊ฐœ์ˆ˜๋ฅผ 5๊ฐœ๋กœ ์„ค์ •ํ•ด ์ฃผ์—ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์ž‘์—…์ด ๋‹ค ๋๋‚œ ํ›„์—๋Š” Refresh Token์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.
๋จผ์ € Refresh ํ† ํฐ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•˜๊ณ , JwtUtil์— Refresh Token ๋งŒ๋“œ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋กœ๊ทธ์ธ ๋กœ์ง์— Refresh Token์„ ์ถ”๊ฐ€ํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค. ์™„๋ฃŒํ•œ ํ›„, Refresh Token์€ Redis์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , Redis์— Refresh Token์ด ์ €์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ง์„ ์ˆ˜์ •ํ–ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋กœ๊ทธ์•„์›ƒ API๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋กœ๊ทธ์•„์›ƒ ํ–ˆ์„ ๋•Œ Redis์— ์ €์žฅ๋œ Refresh Token์ด ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

์ƒ๊ฐํ–ˆ๋˜ ๋Œ€๋กœ ์ „๋ถ€ ๊ฐœ๋ฐœํ•˜๊ณ  ๋‚˜๋‹ˆ ๋ฟŒ๋“ฏํ•œ ํ•˜๋ฃจ์˜€๋‹ค. 

 

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์€ ๋ญ๊ฐ€ ์žˆ๋”๋ผ..?!

Refresh Token

Access Token์ด ๋งŒ๋ฃŒ๋˜์—ˆ์„ ๋•Œ, ์ƒˆ๋กœ์šด Access Token์„ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•œ ํ† ํฐ
์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋…ธ์ถœ, ์„œ๋ฒ„์—๋„ ์ €์žฅ๋จ
์ˆ˜๋ช…์ด ๊ธธ๋‹ค (๋ณดํ†ต 7์ผ ~ 30์ผ ์ด์ƒ)
๐Ÿ‘‰ Access Token์ด ๋งŒ๋ฃŒ๋์ง€๋งŒ, ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž๋™์œผ๋กœ ์ƒˆ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ์ด๋‹ค.

๊ทธ๋Ÿผ ์™œ ํ•„์š”ํ•œ๊ฐ€?

์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๊ณ  Access Token์„ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค.
๋กœ๊ทธ์ธํ•˜๊ณ  30๋ถ„ ๋’ค Access Token์ด ๋งŒ๋ฃŒ๋œ๋‹ค. ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ UX๊ฐ€ ๋งค์šฐ ๋‚˜์˜๋‹ค.
๋Œ€์‹  ์ €์žฅ๋œ Refresh Token์œผ๋กœ ์ƒˆ๋กœ์šด Access Token์„ ๋ฐœ๊ธ‰ํ•˜๋ฉด ๋กœ๊ทธ์ธ ์œ ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค!

Refresh Token์˜ ๋™์ž‘ ํ๋ฆ„

[๋กœ๊ทธ์ธ ์‹œ]
  โฌ‡๏ธ
Access Token + Refresh Token ๋ฐœ๊ธ‰
  โฌ‡๏ธ
Access Token์€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ
Refresh Token์€ Redis ๊ฐ™์€ ์„œ๋ฒ„ ์ €์žฅ์†Œ์— ์ €์žฅ
  โฌ‡๏ธ
[Access Token ๋งŒ๋ฃŒ ์‹œ]
  โฌ‡๏ธ
Refresh Token์„ ํ†ตํ•ด Access Token ์žฌ๋ฐœ๊ธ‰ ์š”์ฒญ
  โฌ‡๏ธ
์„œ๋ฒ„๊ฐ€ Redis์—์„œ Refresh Token ํ™•์ธ ํ›„ Access Token ์žฌ๋ฐœ๊ธ‰

 

๐Ÿ—“๏ธ ๋‚ด์ผ์€ ๋ญ ํ•˜์ง€?!

โœ”๏ธ QueryDSL๋กœ ์ „๋ถ€ ์ˆ˜์ •
โœ”๏ธ ์šด๋™
โœ”๏ธ TIL ์ž‘์„ฑ