[TIL 0424] RefreshToken

zittoยท2023๋…„ 4์›” 24์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
63/77
post-thumbnail

๐Ÿ’ก RefreshToken ์ด๋ž€?

๋ฐœ๊ธ‰๋œ AccessToken์˜ ์œ ํšจ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜ ๋งŒ๋ฃŒ ๋˜๋Š” ์‹œ์ ์—์„œ
RefreshToken์„ ํ†ตํ•ด, ๋กœ๊ทธ์ธ ๊ณผ์ • ์—†์ด ์ƒˆ๋กœ์šด AccessToken์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

RefreshToken์€ 2์ฃผ~1๊ฐœ์›” ์ •๋„์˜ ๊ธด ๋งŒ๋ฃŒ ๊ธฐํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ ,
๋งŒ๋ฃŒ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์žฌ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•ด
์ƒˆ๋กœ์šด RefreshToken ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

RefreshToken์„ ์–ด๋””์— ๋‹ด์•„ ๋ฐ›์•„์˜ฌ๊นŒ?
๋กœ์ปฌ/์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์˜ ๊ฒฝ์šฐ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ์„ ์ทจ๊ธ‰ํ•  ๋•Œ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ 
์ฟ ํ‚ค์— RefreshToken์„ ๋‹ด์•„์„œ ๋ฐ›์•„์˜ค๊ฒŒ ๋œ๋‹ค.

โœ”๏ธ ์ฟ ํ‚ค์˜ secure / httpOnly ์˜ต์…˜

์ฟ ํ‚ค๋ผ๊ณ  ํ•ด์„œ ๋งค์šฐ ์•ˆ์ „ํ•œ ๊ฒƒ์€ ์•„๋‹˜!
ํ•˜์ง€๋งŒ ๋กœ์ปฌ/์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์™€๋Š” ๋‹ค๋ฅด๊ฒŒ secure, httpOnly ๋“ฑ์˜ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค..

  • httpOnly : ๋ธŒ๋ผ์šฐ์ €์—์„œ Javascript๋ฅผ ์ด์šฉํ•ด ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ , ํ†ต์‹ ์œผ๋กœ๋งŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.(ํ•ด์ปค๋กœ๋ถ€ํ„ฐ ์•ˆ์ „!)
  • secure : https ํ†ต์‹  ์‹œ์—๋งŒ ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ RefreshToken์„ ์ด์šฉํ•ด AccessToken์„ ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๊ณผ์ •

  1. AccessToken ๋งŒ๋ฃŒ ํ›„ ์ธ๊ฐ€ ์š”์ฒญ
  2. ํ•ด๋‹น ์˜ค๋ฅ˜ ํฌ์ฐฉํ•ด์„œ ์ธ๊ฐ€ ์—๋Ÿฌ(ํ† ํฐ๋งŒ๋ฃŒ)์ธ์ง€ ์ฒดํฌ(unAuthenticated)
  3. RefreshToken์œผ๋กœ AccessToken ์žฌ๋ฐœ๊ธ‰ ์š”์ฒญ
  4. ๋ฐœ๊ธ‰ ๋ฐ›์€ AccessToken์„ state์— ์žฌ์ €์žฅ
  5. ๋ฐฉ๊ธˆ ์‹คํŒจํ–ˆ๋˜ ์ฟผ๋ฆฌ(error) API๋ฅผ ์žฌ์š”์ฒญ
  6. accessToken๋งŒ ์ƒˆ accessToken๋กœ ์š”์ฒญํ•ด์„œ ์ธ๊ฐ€ ์„ฑ๊ณต
  7. ํ•ด๋‹น fetchUser ์š”์ฒญํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌ
  8. user๊ฐ€ ํ”„๋กœํ•„์กฐํšŒ๋ฅผ ํ•˜๋ฉด ๋’ท๋‹จ์—์„œ Slient Auth(์กฐ์šฉํ•œ ์ธ์ฆ)

โœ”๏ธ ์†Œ์…œ ๋กœ๊ทธ์ธ ( OpenAuth ์„œ๋น„์Šค )

์œ„์™€ ๊ฐ™์€ ๋กœ๊ทธ์ธ ์„œ๋น„์Šค๋ฅผ ์นด์นด์˜ค์—์„œ ์ œ๊ณต์„ ํ•˜๊ณ , ๋„ค์ด๋ฒ„์—์„œ ์ œ๊ณต์„ ํ•˜๊ณ , ๊ตฌ๊ธ€์—์„œ ์ œ๊ณต์„ ํ•œ๋‹ค.
์ด๋Ÿฐ ์„œ๋น„์Šค๋“ค์„ OAuth ์„œ๋น„์Šค๋ผ๊ณ  ํ•˜๋ฉฐ, ํ”ํžˆ ์†Œ์…œ ๋กœ๊ทธ์ธ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.


๐Ÿ’ก ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ (Micro Service Architecture)

๋ฐฑ์—”๋“œ์˜ ์„œ๋น„์Šค๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ๋‹ด๋Š” ์„œ๋น„์Šค ๊ตฌ์กฐ

์ผ๋ฐ˜์ ์œผ๋กœ ์ธ์ฆ/์ธ๊ฐ€์™€ ๊ด€๋ จ๋œ API๋ฅผ ๋‹ด์•„ ๋†“์€ ์ธ์ฆ ์„œ๋น„์Šค,
์ปจํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ API๋ฅผ ๋‹ด์•„ ๋†“์€ ๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค๋กœ ๋‚˜๋‰˜๋ฉฐ,
๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค๋„ ๊ฐ๊ฐ์˜ API์˜ ์šฉ๋„์— ๋”ฐ๋ผ ๋” ์ž˜๊ฒŒ ์ชผ๊ฐœ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ˜„๋Œ€ ์›น์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

โœ”๏ธ MSA์˜ ์žฅ์ 
1. ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋ฅผ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์–ธ์–ด๋‚˜ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
2. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ผ๋ถ€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋งŒ ๋‹ค์šด๋  ๋ฟ ์„œ๋น„์Šค ์ „์ฒด๊ฐ€ ์ ‘์† ๋ถˆ๊ฐ€๋Šฅํ•ด์ง€๋Š” ์‚ฌํƒœ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

โœ”๏ธ MSA์˜ ๋‹จ์ 
1. ์„œ๋น„์Šค์˜ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค.


profile
JUST DO WHATEVER

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