Web

사용자 인증 Token : Access vs Refresh

sungjae0309 2026. 4. 6. 22:02

1. Access Token

  • 역할: API 요청 시 사용자 인증/인가 "확인" 용도로 사용
  • 수명: 짧음 (보통 15~30분)
    • 이유: 만약 토큰 탈취 당하면 위험하므로 빨리 만료되도록 설계
  • 저장위치: 메모리

2. Refresh Token

  • 역할: AccessToken 만료 되었을 시 새로운 AccessToken 발급 받기 위해 사용
  • 수명: 길다 (보통 7일 ~ 30일)
    • 이유: 평소 통신할 때는 사용하지 않고 오직 토큰 갱신할 때만 서버에 보냄
  • 저장위치: HttpOnly 쿠키

3. 사용자 인증 흐름도

  1. 로그인 성공: 서버가 Access(30분짜리)와 Refresh(2주 짜리) token을 둘 다 제공
  2. 평상시: 클라이언트는 Access token만 헤더에 실어서 요청
  3. 만료: 30분이 지나 Access Token이 죽으면, 서버에 "유효하지 않은 토큰"임을 응답
  4. 갱신: 클라이언트는 이때 저장해둔 Refresh Token을 서버에 보냄
  5. 재발급: 서버는 Refresh Token이 유효한지 확인 후, 새로운 Access Token을 내려줌
  6. 결과: 사용자는 로그아웃되지 않고 계속 서비스 이용 가능 

4. 요약 및 비교

구분 Access Token Refresh Token
사용 빈도 매 API 요청마다 사용 Access Token이 만료됐을 때만 사용
만료 시 Refresh Token으로 재발급 요청 다시 로그인(아이디/비번 입력) 필요
저장 위치 메모리 아주 안전한 곳(서버 DB, HttpOnly 쿠키)
기간 기간을 짧게 해서 탈취 피해 방지 유효기간 길게 유지