Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Kuma's Curious Paradise

[이룸] 240221 access token reissue 방법 고민 본문

이룸 프로젝트

[이룸] 240221 access token reissue 방법 고민

쿠마냥 2024. 3. 6. 17:27

[문제 상황]

토큰 재발급 로직 구현 중, 토큰이 만료되었음을 어떻게 알 수 있는지 고민하게 되었다. 먼저, 토큰의 만료 여부를 확인하는 방법에는 크게 두 가지가 있었다.

  1. 프론트에서 토큰 만료 시간을 저장한 후, 토큰이 만료되기 전에 토큰 재발급 요청을 보낸다.
  2. 백엔드에서 토큰의 유효성을 확인한 후, 401 에러를 보내면 프론트에서는 토큰이 만료되었음을 인지하고 토큰 재발급 요청을 보낸다.

이중, 어떤 방법을 선택해야 할까?

 

[해결 방안 고민]

프론트엔드에서 토큰 만료 확인:

  • 서버 부하 감소: 클라이언트 → 요청 → 서버의 401 응답 → 토큰 재발급 요청 → 서버는 토큰 재발급하여 응답 → 다시 요청 → 서버의 200 응답

백엔드에서 토큰 만료를 확인하면 세 번의 요청과 응답을 거치지만, 프론트에서 토큰 만료를 확인할 경우 2번으로 줄어든다. 트래픽이 많다면 서버 부하를 줄일 수 있을 것.

  • 사용자 경험 개선: 클라이언트 측에서 토큰이 만료되었음을 감지하고 사용자에게 로그인 상태가 만료되었음을 즉시 알리거나 필요한 조치를 빠르게 취할 수 있다. 글을 쓰다가 갑자기 로그아웃되어 다시 로그인해야 하는 일 등이 사라질 것.

백엔드에서 토큰 만료 확인:

  • 보안 강화: 토큰과 관련된 모든 일은 백엔드에서 처리하는 것이 보안에 유리하다. 클라이언트 측에서 발생할 수 있는 오류나 조작 등을 방지하고, 토큰 유효성 검사를 실시하여 보안을 강화하는 것이 가능.
  • 추가 작업 가능: 요청이 오면, 서버는 토큰을 검증하고 사용자가 지금 어떤 상태에 있는지, 현재 요청이 온 기기가 어떤 기기인지 등을 확인하고 추가적인 작업에 들어갈 수 있다. 더욱 견고한 보안을 위해 추가 인증을 요청할 수도 있고, 사용자 상태에 맞는 조치를 취할 수도 있을 테니, 복잡한 요구 사항이 있다면 맞출 수 있을 것.

[적용 결과] 토큰과 관련하여 가장 중요한 것은 ‘보안’이므로 보안을 강화하는 방향으로 가는 것이 맞다고 판단하여, 백엔드에서 토큰 만료를 확인하고 401 응답을 보내 주기로 결정하였다. 또한, 현재 프론트엔드에서 쿠키를 다룰 수 없어 어려움을 겪고 있는 상황이라, 백엔드에서 최대한 토큰을 처리하는 것이 좋다고 판단하였다.