[ν”„λ‘œμ νŠΈ]πŸ”’Β RefreshToken κ΅¬ν˜„ 고민해보기

jeeenyΒ·2024λ…„ 9μ›” 29일
post-thumbnail

λ¦¬ν”„λ ˆμ‹œ 토큰이 ν•„μš”ν•œ 이유

방끗 ν”„λ‘œμ νŠΈμ—μ„œλŠ” JWT 토큰을 μ‚¬μš©ν•΄ 인증/인가 μ„œλΉ„μŠ€λ₯Ό κ΅¬ν˜„ν–ˆλ‹€. μ΄λ•Œ ν† ν°μ˜ μœ νš¨μ‹œκ°„μ€ 2μ‹œκ°„μ΄λ‹€. 방을 λ‘˜λŸ¬λ³΄λ©° 체크리슀트λ₯Ό μž‘μ„±ν•˜λŠ”λ° 2μ‹œκ°„μ΄λ©΄ μΆ©λΆ„ν•˜λ‹€κ³  νŒλ‹¨ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€. 그런데 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•΄λ³΄λ‹ˆ 2μ‹œκ°„μ΄ μΆ©λΆ„ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆκ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. μ˜€ν›„μ— μž μ‹œ 체크리슀트 질문 λͺ©λ‘μ„ ν™•μΈν•˜κ³  λͺ‡ μ‹œκ°„μ΄ μ§€λ‚œ λ’€ 방을 λ‘˜λŸ¬λ³΄λŠ” μ‚¬μš©μžκ°€ μžˆμ„ μˆ˜λ„ μžˆλ‹€. λ˜ν•œ 방을 λ‘˜λŸ¬λ³Έ λ’€ 계약을 ν•˜κΈ° μœ„ν•΄ 체크리슀트 질문 λͺ©λ‘μ„ λ‹€μ‹œ ν™•μΈν•˜λ©° κ³ λ―Όν•˜λŠ” μ‚¬μš©μžλ„ μžˆμ„ 것이닀. μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λŠ” 도쀑 둜그인이 ν’€λ¦°λ‹€λ©΄ ꡉμž₯히 λΆˆνŽΈν•˜λ‹€.

둜그인 μ‹œκ°„μ„ 더 길게 κ°€μ Έκ°€κΈ° μœ„ν•΄ λ°©λ—νŒ€μ€ μ•‘μ„ΈμŠ€ 토큰, λ¦¬ν”„λ ˆμ‹œ 토큰을 λ„μž…ν•˜κΈ°λ‘œ κ²°μ •ν–ˆλ‹€. ν† ν°μ˜ μœ νš¨μ‹œκ°„μ„ 더 λŠ˜λ¦¬λŠ” 방법도 μžˆμ„ 것이닀. ν•˜μ§€λ§Œ λ³΄μ•ˆμƒμ˜ 이유둜 μ„ νƒν•˜μ§€ μ•Šμ•˜λ‹€. 토큰을 νƒˆμ·¨λ‹Ήν•  경우 μ„œλ²„μ—μ„œ 해쀄 수 μžˆλŠ” 것이 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€. μœ νš¨μ‹œκ°„μ΄ λ§Œλ£Œλ˜λŠ” λ™μ•ˆ ν•΄μ»€λŠ” κ³„μ†ν•΄μ„œ μ„œλΉ„μŠ€μ— μ ‘κ·Όν•  수 μžˆλ‹€λŠ” 문제점이 μžˆμ—ˆλ‹€.

λ¦¬ν”„λ ˆμ‹œ 토큰을 κ΅¬ν˜„ν•˜λŠ” 일반적인 방법

기쑴에 μ•Œκ³  있던 λ¦¬ν”„λ ˆμ‹œ 토큰 κ΅¬ν˜„ 흐름은 λ‹€μŒκ³Ό κ°™λ‹€.

  • λ‘œκ·ΈμΈμ‹œ μ•‘μ„ΈμŠ€ 토큰, λ¦¬ν”„λ ˆμ‹œ 토큰을 ν•¨κ»˜ λ°˜ν™˜ν•œλ‹€.
  • μ•‘μ„ΈμŠ€ 토큰은 유효 μ‹œκ°„μ„ 짧게, λ¦¬ν”„λ ˆμ‹œ 토큰은 μƒλŒ€μ μœΌλ‘œ 길게 μ„€μ •ν•œλ‹€.
    • 보톡 μ•‘μ„ΈμŠ€ 토큰은 15 ~ 30λΆ„, λ¦¬ν”„λ ˆμ‹œ 토큰은 1 ~ 2μ£Ό μ‚¬μ΄λ‘œ μ„€μ •ν•œλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈ β†’ μ„œλ²„λ‘œ API μš”μ²­μ‹œ μ•‘μ„ΈμŠ€ 토큰을 μ‚¬μš©ν•œλ‹€.
  • μ•‘μ„ΈμŠ€ 토큰이 만료되면 λ¦¬ν”„λ ˆμ‹œ ν† ν°μœΌλ‘œ μƒˆλ‘­κ²Œ μ•‘μ„ΈμŠ€ 토큰을 κ°±μ‹ ν•œλ‹€.

λ¦¬ν”„λ ˆμ‹œ 토큰 κ΅¬ν˜„ν•˜κΈ°

βœ…Β λ¦¬ν”„λ ˆμ‹œ 토큰을 μ„œλ²„μ— μ €μž₯ν•΄μ•Ό ν• κΉŒ?

보톡은 λ ˆλ””μŠ€λ₯Ό ν™œμš©ν•΄ λ¦¬ν”„λ ˆμ‹œ 토큰을 μ„œλ²„μ— μ €μž₯ν•˜λŠ” κ΅¬ν˜„λ°©μ‹μ„ 많이 λ³΄μ•˜λ‹€. λ¦¬ν”„λ ˆμ‹œ 토큰이 νƒˆμ·¨λ˜μ—ˆλŠ”μ§€ 확인할 수 있고, νƒˆμ·¨λœ 경우 유효 μ‹œκ°„μ„ λ§Œλ£Œμ‹œν‚΄μœΌλ‘œμ¨ 좔가적인 문제λ₯Ό λ°©μ§€ν•  수 있기 λ•Œλ¬Έμ΄λ‹€.

λ‹€μŒμ˜ μ‹œλ‚˜λ¦¬μ˜€λ‘œ λ¦¬ν”„λ ˆμ‹œ 토큰이 νƒˆμ·¨λ˜μ—ˆλŠ”μ§€ μ•Œ 수 μžˆλ‹€.

  • μ„œλ²„μ—μ„œ (key, value) 쌍으둜 μ•‘μ„ΈμŠ€ 토큰과 λ¦¬ν”„λ ˆμ‹œ 토큰을 μ €μž₯ν•œλ‹€.
  • 해컀가 λ¦¬ν”„λ ˆμ‹œ 토큰을 νƒˆμ·¨ν•΄ μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰ν•˜λŠ” μš”μ²­μ„ 보낸닀.
  • μ„œλ²„λŠ” μƒˆλ‘­κ²Œ μ•‘μ„ΈμŠ€ 토큰을 κ°±μ‹ ν•˜κ³  key 값을 κ°±μ‹ ν•œλ‹€.
  • 정상적인 μ‚¬μš©μžκ°€ λ¦¬ν”„λ ˆμ‹œ ν† ν°μœΌλ‘œ μƒˆλ‘œμš΄ μ•‘μ„ΈμŠ€ 토큰을 μš”μ²­ν•œλ‹€.

그런데, μ‚¬μš©μžμ˜ μ•‘μ„ΈμŠ€ 토큰과 μΌμΉ˜ν•˜λŠ” key값이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 이미 해컀가 μ•‘μ„ΈμŠ€ 토큰을 κ°±μ‹ ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€. ν•΄λ‹Ή λ¬Έμ œκ°€ 발견되면 κ·Έ μ¦‰μ‹œ ν•΄λ‹Ή μ•‘μ„ΈμŠ€ 토큰을 λ§Œλ£Œμ‹œμΌœ ν•΄μ»€μ˜ 접근을 막을 수 μžˆλ‹€.

ν•˜μ§€λ§Œ λ¦¬ν”„λ ˆμ‹œ 토큰을 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•˜λŠ” μˆœκ°„ JWT 토큰이 μ œκ³΅ν•˜λŠ” stateless μž₯점이 사라진닀고 μƒκ°ν–ˆλ‹€. stateν•œ μƒνƒœμ—μ„œλŠ” μ„œλ²„ κ°„μ˜ 값을 μΌμΉ˜μ‹œν‚€λŠ” μž‘μ—…μ΄ ν•„μš”ν•˜κ³ , λ§€ μš”μ²­λ§ˆλ‹€ 정상적인 μ‚¬μš©μžμΈμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 값을 μ‘°νšŒν•˜λŠ” κ³Όμ •μ—μ„œ μ„œλ²„μ˜ 뢀담이 μ¦κ°€ν•˜κ²Œ λœλ‹€. statelessν•œ μž₯점을 μ·¨ν•˜κ³ μž JWT 토큰을 μ‚¬μš©ν–ˆλŠ”λ° λ¦¬ν”„λ ˆμ‹œ 토큰을 μ‚¬μš©ν•˜λ©΄μ„œ κ·Έ μž₯점을 μžƒκ³  μ‹Άμ§€λŠ” μ•Šμ•˜λ‹€. 기쑴에 토큰을 쿠킀에 μ €μž₯ν–ˆλ˜ κ²ƒμ²˜λŸΌ λ¦¬ν”„λ ˆμ‹œ 토큰도 쿠킀에 같이 μ €μž₯ν•˜λ©΄ λ¬Έμ œκ°€ λ˜λ‚˜?λ₯Ό κ³ λ―Όν•˜κ²Œ λ˜μ—ˆλ‹€.

βœ…Β λ³΄μ•ˆ μ΄μŠˆλŠ” 무엇이 μžˆλŠ”κ°€?

κ·Έλ ‡λ‹€λ©΄ μ›Ή ν†΅μ‹ κ³Όμ •μ—μ„œ 일어날 수 μžˆλŠ” λ³΄μ•ˆ 이슈λ₯Ό μ•Œμ•„λ΄μ•Ό ν–ˆλ‹€. XSS(Cross-Site Scripting)와 CSRF(Cross-Site Request Forgery)이 κ°€μž₯ ν”ν•˜κ²Œ λ°œμƒν•˜λŠ” 곡격 μœ ν˜•μ΄λ©΄μ„œ κ°€μž₯ 자주 λ“±μž₯ν•˜λŠ” κ°œλ…μ΄λ‹€.

XSS 곡격

κ³΅κ²©μžκ°€ μ›Ή νŽ˜μ΄μ§€μ— μ•…μ˜μ μΈ 슀크립트λ₯Ό μ‚½μž…ν•˜μ—¬ μ‚¬μš©μžμ˜ 정보λ₯Ό νƒˆμ·¨ν•˜κ±°λ‚˜ μ‘°μž‘ν•˜λŠ” 곡격이닀. 예λ₯Ό λ“€μ–΄, κ³΅κ²©μžκ°€ κ²Œμ‹œνŒμ— μ•…μ˜μ μΈ 슀크립트λ₯Ό ν¬ν•¨ν•œ 글을 μž‘μ„±ν•˜λ©΄, 이 글을 μ½λŠ” μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €μ—μ„œ ν•΄λ‹Ή μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜μ–΄ κ³΅κ²©μžμ—κ²Œ 정보가 유좜될 수 μžˆλ‹€. 토큰이 슀크립트둜 μ ‘κ·Όν•  수 μžˆλŠ” 곳에 μ €μž₯λ˜μ–΄ μžˆλ‹€λ©΄ XSS 곡격에 μ·¨μ•½ν•΄μ§„λ‹€.

CSRF 곡격

μ‚¬μš©μžκ°€ μžμ‹ μ˜ μ˜μ§€μ™€ λ¬΄κ΄€ν•˜κ²Œ κ³΅κ²©μžκ°€ μ˜λ„ν•œ ν–‰μœ„λ₯Ό μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μš”μ²­ν•˜κ²Œ λ§Œλ“œλŠ” 곡격이닀. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ 인터넷 λ±…ν‚Ή μ„œλΉ„μŠ€μ— λ‘œκ·ΈμΈν•œ μƒνƒœμ—μ„œ κ³΅κ²©μžκ°€ μ€€λΉ„ν•œ 결제 μš”μ²­ 링크λ₯Ό ν΄λ¦­ν•˜κ²Œ 되면, μ‚¬μš©μžλŠ” μžμ‹ μ˜ μ˜μ§€μ™€λŠ” λ¬΄κ΄€ν•˜κ²Œ 결제λ₯Ό μ§„ν–‰ν•˜κ²Œ λœλ‹€. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œλŠ” CSRF 토큰 μ‚¬μš©, μΏ ν‚€μ˜ SameSite 속성 μ„€μ •, Referrer 검증 등이 μžˆλ‹€.

βœ…Β μΏ ν‚€λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή λ³΄μ•ˆ 이슈λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ”κ°€?

Cookie + HttpOnly + secure + Same Site μ˜΅μ…˜μ„ λͺ¨λ‘ ν™œμš©ν•œλ‹€λ©΄ μœ„μ—μ„œ λ§ν•œ λ³΄μ•ˆ 이슈λ₯Ό μ˜ˆλ°©ν•  수 μžˆλ‹€. HttpOnly μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 슀크립트λ₯Ό 톡해 쿠킀값을 읽어볼 수 μ—†κΈ° λ•Œλ¬Έμ— XSS 곡격에 λŒ€ν•΄ λ°©μ–΄ν•  수 μžˆλ‹€. λ˜ν•œ SameSite μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ μΏ ν‚€λ₯Ό 전솑할 λ²”μœ„λ₯Ό μ„€μ •ν•  수 μžˆλ‹€. νŠΉμ • μš”μ²­μ„ μ œμ™Έν•˜κ³ λŠ” ν˜„μž¬ νŽ˜μ΄μ§€μ˜ 도메인과 μš”μ²­λ°›λŠ” 도메인이 κ°™μ•„μ•Όλ§Œ μΏ ν‚€λ₯Ό 전솑해쀀닀. 해컀가 λ‹€λ₯Έ μ‚¬μ΄νŠΈλ₯Ό 톡해 μš”μ²­μ„ 보내도 도메인이 μΌμΉ˜ν•˜μ§€ μ•Šμ•„ CSRF 곡격에 λŒ€ν•΄ λ°©μ–΄ν•  수 μžˆλ‹€.

βœ…Β μ •λ¦¬

λ¦¬ν”„λ ˆμ‹œ 토큰이 νƒˆμ·¨λ‹Ήν•˜λ©΄ κ³„μ†ν•΄μ„œ μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰λ°›μ„ 수 있기 λ•Œλ¬Έμ— λ³΄μ•ˆ λ¬Έμ œμ— λŒ€ν•΄ 깊게 고민해봐야 ν•œλ‹€. 그리고 κ΅¬ν˜„ 방식을 ν•œ 번 μ •ν•˜λ©΄ λ°”κΎΈκΈ° 쉽지 μ•ŠκΈ° λ•Œλ¬Έμ— 정말 λ§Žμ€ 고민을 ν–ˆλ‹€.

ν•˜μ§€λ§Œ 아무리 생각해봐도 λ³΄μ•ˆ 문제λ₯Ό κ³ λ―Όν•œλ‹€λ©΄ λ¦¬ν”„λ ˆμ‹œ 토큰을 μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ 끝도 없이 이 방법, μ € 방법을 κ°–λ‹€ λΆ™μ—¬μ•Ό ν–ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ¦¬ν”„λ ˆμ‹œ 토큰을 ν•œ 번만 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” RTR(Refresh Token Rotation) κ°œλ…μ΄λΌλ˜μ§€ .. 점점 JWT 토큰에 λŒ€ν•œ 회의감이 λ“  것도 사싀이닀. νŽΈλ¦¬μ„±κ³Ό λ³΄μ•ˆμ„±μ„ λͺ¨λ‘ μ±™κΈ°κΈ°λŠ” 쉽지 μ•Šμ•˜λ‹€.

κ·Έλž˜μ„œ 였랜 κ³ λ―Ό 끝에 λ‹€μŒμ˜ 방식을 μ„ νƒν–ˆλ‹€.

  • μ„œλ²„μ—μ„œλŠ” μ•‘μ„ΈμŠ€ 토큰과 λ¦¬ν”„λ ˆμ‹œ 토큰을 μΏ ν‚€λ‘œ λ‹΄μ•„ μ „λ‹¬ν•œλ‹€.
  • μ•‘μ„ΈμŠ€ 토큰이 만료되면 API μš”μ²­μ„ 보내 μ•‘μ„ΈμŠ€ 토큰을 κ°±μ‹ ν•΄ μΏ ν‚€λ₯Ό κ°±μ‹ ν•œλ‹€.

μΏ ν‚€ μ˜΅μ…˜μ„ μ œλŒ€λ‘œ μ„€μ •ν•΄μ€€λ‹€λ©΄ μ–΄λŠ 정도 λ³΄μ•ˆ 이슈λ₯Ό 막을 수 μžˆλ‹€κ³  μƒκ°ν–ˆλ‹€. λ³΄μ•ˆμ— λŒ€ν•œ μ‘°μΉ˜κ°€ λ―Έν‘ν•œ 점이 쑰금 κ±Έλ¦¬μ§€λ§Œ μ§€κΈˆ λ‹¨κ³„μ—μ„œ λ‹Ήμž₯ ν•„μš”μ„±μ„ λŠλΌμ§€ λͺ»ν•˜λŠ” μž‘μ—…μ€ μ§„ν–‰ν•˜μ§€ μ•ŠκΈ°λ‘œ ν–ˆλ‹€.

ν”„λ‘ νŠΈμ™€ ν˜‘μ—…ν•˜κΈ°

βœ…Β μ˜ˆμ™Έ λ©”μ‹œμ§€ 정리

ν”„λ‘ νŠΈμ—μ„œ μ•‘μ„ΈμŠ€ 토큰이 λ§Œλ£Œλ˜μ—ˆμŒμ„ μ•Œκ³  /reissue API μš”μ²­μ„ 보내기 μœ„ν•΄μ„œλŠ”, 즉 ν”„λ‘ νŠΈ μ½”λ“œ λ‚΄μ—μ„œ λΆ„κΈ°μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ˜ˆμ™Έ λ©”μ‹œμ§€λ₯Ό 같이 λ§žμΆ°λ΄μ•Ό ν–ˆλ‹€. 토큰을 μ‚¬μš©ν–ˆμ„ λ•Œ λ°œμƒν•  수 μžˆλŠ” μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ­‰ λ‚˜μ—΄ν•΄λ³΄κ³  μ˜ˆμ™Έ λ©”μ‹œμ§€λ₯Ό μ •λ¦¬ν–ˆλ‹€.

μš”μ²­ μœ ν˜•λ¦¬ν”„λ ˆμ‹œ ν† ν°μ•‘μ„ΈμŠ€ ν† ν°μ²˜λ¦¬ κ²°κ³Όλ‹€μŒ μš”μ²­
일반 μš”μ²­OX"토큰 정보가 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 토큰을 μž¬λ°œκΈ‰ν•΄μ£Όμ„Έμš”."/accessToken/reissue
일반 μš”μ²­XO"둜그인이 ν•„μš”ν•œ μ‚¬μš©μžμž…λ‹ˆλ‹€."/oauth/login
일반 μš”μ²­XX"둜그인이 ν•„μš”ν•œ μ‚¬μš©μžμž…λ‹ˆλ‹€."/oauth/login
/accessToken/reissueXX"토큰 정보가 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 토큰을 μž¬λ°œκΈ‰ν•΄μ£Όμ„Έμš”."/oauth/login
/accessToken/reissueXO"둜그인이 ν•„μš”ν•œ μ‚¬μš©μžμž…λ‹ˆλ‹€."/oauth/login

이 κ³Όμ •μ—μ„œ μ˜ˆμ™Έ λ©”μ‹œμ§€λ₯Ό 던질 λ•Œ μ˜ˆμ™Έ μ½”λ“œκ°€ ν•„μš”ν•˜λ‹€λŠ” 것을 λŠκΌˆλ‹€. μ˜ˆμ™Έ λ©”μ‹œμ§€λ‘œ ν”„λ‘ νŠΈμ™€ μ†Œν†΅ν•˜λŠ” 것이 쉽지 μ•Šμ•˜κ³  μ˜ˆμ™Έ 상황을 λ¬Έμžμ—΄λ‘œ νŒλ‹¨ν•˜λŠ” 것은 λ°”λžŒμ§ν•΄λ³΄μ΄μ§€ μ•Šμ•˜λ‹€. λ˜ν•œ λ°±μ—”λ“œ μ½”λ“œ λ‘œμ§λ‚΄μ—μ„œ μ•‘μ„ΈμŠ€ 토큰과 λ¦¬ν”„λž˜μ‹œ 토큰이 κ³΅ν†΅μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” 뢀뢄이 μžˆμ–΄ ν˜„μž¬λŠ” μ˜ˆμ™Έ λ©”μ‹œμ§€κ°€ λΉ„μŠ·ν•œλ° 이 뢀뢄도 각 상황에 따라 더 μ μ ˆν•œ μ˜ˆμ™Έ λ©”μ‹œμ§€λ‘œ λ¦¬νŒ©ν† λ§ν•  μ˜ˆμ •μ΄λ‹€.

βœ…Β reissue APIκ°€ 정말 ν•„μš”ν•œκ°€?

μ„œλ²„μ—μ„œ κ΅¬ν˜„ν•œ reissue APIλ₯Ό ν”„λ‘ νŠΈμ™€ ν˜‘μ—…ν•˜λ©΄μ„œ 고민이 생겼닀. μ˜ˆμ™Έ λ©”μ‹œμ§€λ₯Ό λ§žμΆ”λŠ” μž‘μ—…μ΄ 생각보닀 쉽지 μ•Šμ•˜κ³ , "차라리 μ˜ˆμ™Έ λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜μ§€ μ•Šκ³ , μ•‘μ„ΈμŠ€ 토큰이 만료되면 μ„œλ²„κ°€ μ•Œμ•„μ„œ μΏ ν‚€λ₯Ό μ„€μ •ν•΄μ£ΌλŠ” 방식이 더 λ‚˜μ€ 게 μ•„λ‹κΉŒ?"λΌλŠ” 이야기가 λ‚˜μ™”λ‹€. ν•˜μ§€λ§Œ 이 방식에 λŒ€ν•΄ μ™ μ§€ λͺ¨λ₯Ό 찝찝함이 μžˆμ—ˆλ‹€. μ—¬λŸ¬ κ°€μ§€λ₯Ό μΆ©λΆ„νžˆ κ³ λ €ν•˜μ§€ λͺ»ν•œ μƒνƒœμ—μ„œ 결정을 λ‚΄λ¦¬κΈ°μ—λŠ” κ²½ν—˜κ³Ό κ·Όκ±°κ°€ λΆ€μ‘±ν•˜λ‹€κ³  λŠκΌˆλ‹€. κ²°κ΅­ μ‹œκ°„ λΆ€μ‘±μœΌλ‘œ 인해 일단은 κ΅¬ν˜„λœ Reissue APIλ₯Ό μ‚¬μš©ν•˜λŠ” μͺ½μœΌλ‘œ 결둠을 λ‚΄λ Έμ§€λ§Œ, 이 방식에 λŒ€ν•΄μ„œλ„ 좔가적인 λ…Όμ˜κ°€ ν•„μš”ν•  것 κ°™λ‹€.

데λͺ¨λ°μ΄ ν”Όλ“œλ°±

데λͺ¨λ°μ΄μ— 2κ°€μ§€ ν”Όλ“œλ°±μ„ 받을 수 μžˆμ—ˆλ‹€. 이에 λŒ€ν•œ 닡은 λ‹€μ‹œ 천천히 κ³ λ―Όν•΄λ³΄μž πŸ˜ƒ

  • μ§€κΈˆμ˜ λ°©μ‹λŒ€λ‘œλΌλ©΄ μ•‘μ„ΈμŠ€ ν† ν°λ§Œ μžˆμ–΄λ„ λ˜λŠ” 것 μ•„λ‹Œκ°€μš”?
  • 정말 λ³΄μ•ˆ 문제λ₯Ό λͺ¨λ‘ κ³ λ €ν•΄λ³΄μ•˜λ‚˜μš”?
profile
λ‚˜μ˜ μ„±μž₯ 기둝

0개의 λŒ“κΈ€