Engineering Note

[Server] Access Token과 Refresh Token을 사용하는 이유 본문

Server

[Server] Access Token과 Refresh Token을 사용하는 이유

Software Engineer Kim 2025. 12. 19. 10:20

 

1. 개요

서비스에서 보안이 필요한 API를 호출할 때마다 로그인을 요구할 수는 없습니다. 이를 해결하기 위해 Token 기반 인증 방식을 사용하며, ㅂ안과 사용자 편의성을 모두 잡기 위해 두 종류의 토큰을 조합하여 운용합니다.

 

2. Access Token: 리소스 접근을 위한 통행증

  • 역할: 인증된 사용자임을 증명하는 토큰입니다.
  • 작동 방식: 클라이언트는 API 요청 시 HTTP 헤더(Authorization)에 이 토큰을 담아 보냅니다.
  • 보안 전략: 토큰이 네트워크를 통해 자주 노출되므로, 탈취 시 피해를 최소화하기 위해 15분~1시간 정도로 짧은 유효기간을 설정합니다.

 

3. Refresh Token: 로그인 유지를 위한 열쇠

Access Token의 짧은 유효기간 때문에 사용자가 매번 다시 로그인해야 한다면 사용자 경험(UX)이 매우 나빠집니다. 이를 보완하기 위해 Refresh Token을 도입합니다.

  • 역할: Access Token이 만료되었을 때, 이를 새로 발급받기 위한 인증 수단입니다.
  • 유효기간: 보통 2주~한 달 정도로 길게 설정합니다.
  • 특징:
    • Access Token이 만료되면 클라이언트는 Refresh Token을 서버로 보내 새 Access Token을 요청합니다.
    • 이 과정은 백그라운드에서 조용히 일어나므로 사용자는 로그아웃되지 않고 서비스를 계속 이용할 수 있습니다.

 

4. 보안 관리 (Token Management)

Refresh Token은 유효기간이 길기 때문에 탈취될 경우 위험할 수 있습니다. 이를 방어하기 위한 실무적인 방법은 다음과 같습니다.

  • 서버측 저장: Refresh Token을 DB에 저장하여 관리합니다.
  • 무효화 처리: 사용자가 로그아웃하거나 보안 침해가 의심될 경우, 서버 DB에서 해당 Refresh Token을 삭제하여 접근을 즉시 차단합니다.
Comments