๊ด€๋ฆฌ ๋ฉ”๋‰ด

Jin's Dev Story

[Spring Security] Access Token+ Refresh Token์„ ์ด์šฉํ•œ ์ธ์ฆ ๋ณธ๋ฌธ

Web & Android/Spring Security

[Spring Security] Access Token+ Refresh Token์„ ์ด์šฉํ•œ ์ธ์ฆ

woojin._. 2023. 10. 19. 09:57
๐Ÿ’ก Access Token+ Refresh Token์„ ์ด์šฉํ•œ ์ธ์ฆ
  • Access Token์„ ์ด์šฉํ•œ ์ธ์ฆ ๋ฐฉ์‹์˜ ๋ฌธ์ œ๋Š” ํ•ด์ปค์—๊ฒŒ ํƒˆ์ทจ๋‹นํ•  ๊ฒฝ์šฐ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค๋Š” ์ 
  • ํ† ํฐ์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์งง๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ์„ ์ž์ฃผ ํ•ด์•ผํ•ด์„œ ๋ฒˆ๊ฑฐ๋กญ๊ณ , ๊ธธ๊ฒŒํ•˜๋ฉด ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ•ด๊ฒจ๋ผ๊ณ ์ž ๋‚˜์˜จ ๊ฒƒ์ด Refresh Token
  • Refresh Token์€ Access Token๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์˜ JWT
  • Refresh Token์€ Access Token๋ณด๋‹ค ๊ธด ์œ ํšจ๊ธฐ๊ฐ„์„ ๊ฐ€์ง€๊ณ , Access Token์ด ๋งŒ๋ฃŒ๋์„ ๋•Œ, ์ƒˆ๋กœ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š” ์—ด์‡ ๊ฐ€ ๋จ

→ ex) Refresh Token์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด 2์ฃผ, Access Token์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด 1์‹œ๊ฐ„์ด๋ผ๋ฉด 2์ฃผ ๋™์•ˆ Access Token์ด ๋งŒ๋ฃŒ๋˜๋Š” 1์‹œ๊ฐ„ ์ฃผ๊ธฐ๋งˆ๋‹ค Access Token์„ ์ƒˆ๋กญ๊ฒŒ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

์ธ์ฆ ์ˆœ์„œ

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์„œ๋ฒ„์—์„œ๋Š” ํšŒ์› DB์—์„œ ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  3. ๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜๋ฉด Access Token, Refresh Token์„ ๋ฐœ๊ธ‰
  4. HTTP ์‘๋‹ต ํ—ค๋”์— ์‹ค์–ด ๋ณด๋ƒ„. ์ด๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ์› DB์— Refresh Token์„ ์ €์žฅ
  5. ์‚ฌ์šฉ์ž๋Š” Refresh Token์„ ์•ˆ์ „ํ•œ ์ €์žฅ์†Œ์— ์ €์žฅ ํ›„, Access Token์„ HTTP ์š”์ฒญ ํ—ค๋”์— ์‹ค์–ด ์š”์ฒญ์„ ๋ณด๋ƒ„
  6. Access Token์„ ๊ฒ€์ฆ
  7. ์ด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ„
  8. ์‹œ๊ฐ„์ด ์ง€๋‚˜ Access Token์ด ๋งŒ๋ฃŒ
  9. ์‚ฌ์šฉ์ž๋Š” ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ Access Token์„ HTTP ์š”์ฒญ ํ—ค๋”์— ์‹ค์–ด ๋ณด๋ƒ„
  10. ์„œ๋ฒ„๋Š” Access Token์ด ๋งŒ๋ฃŒ๋จ์„ ํ™•์ธ
  11. ๊ถŒํ•œ ์—†์Œ์„ ์‹ ํ˜ธ๋กœ ๋ณด๋ƒ„
  12. ์‚ฌ์šฉ์ž๋Š” Refresh Token๊ณผ Access Token์„ HTTP ์š”์ฒญ ํ—ค๋”์— ์‹ค์–ด ๋ณด๋ƒ„
  13. ์„œ๋ฒ„๋Š” ๋ฐ›์€ Access Token์ด ์กฐ์ž‘๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•œ ํ›„, HTTP ์š”์ฒญ ํ—ค๋”์˜ Refresh Token๊ณผ ์‚ฌ์šฉ์ž์˜ DB์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ Refresh Token์„ ๋น„๊ต. Token์ด ๋™์ผํ•˜๊ณ  ์œ ํšจ๊ธฐ๊ฐ„๋„ ์ง€๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ƒˆ๋กœ์šด Access Token์„ ๋ฐœ๊ธ‰
  14. ์„œ๋ฒ„๋Š” ์ƒˆ๋กœ์šด Access Token์„ HTTP ์‘๋‹ต ํ—ค๋”์— ์‹ค์–ด ๋‹ค์‹œ API ์š”์ฒญ์„ ์ง„ํ–‰

์žฅ์ 

  • Access Token์˜ ์œ ํšจ ๊ธฐ๊ฐ„์ด ์งง๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์กด์˜ Access Token๋งŒ์„ ์ด์šฉํ•œ ์ธ์ฆ๋ณด๋‹ค ์•ˆ์ „

๋‹จ์ 

  • ๊ตฌํ˜„์ด ๋ณต์žก
  • Access Token์ด ๋งŒ๋ฃŒ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กญ๊ฒŒ ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ์„œ๋ฒ„์˜ ์ž์› ๋‚ญ๋น„๊ฐ€ ์ƒ๊น€