DeveloPiano

Access Token과 Refresh Token 완벽 가이드 – 인증은 이렇게 작동합니다 본문

Develop/Network

Access Token과 Refresh Token 완벽 가이드 – 인증은 이렇게 작동합니다

DevPi 2025. 4. 1. 14:19
반응형

 

웹이나 모바일 앱 개발에서 사용자 인증은 보안의 핵심입니다. 특히 OAuth2.0 기반의 인증 시스템에서 자주 언급되는 개념이 바로 Access TokenRefresh Token입니다. 많은 개발자들이 처음 접할 때 이 두 토큰의 차이와 사용 목적에 대해 헷갈려 하곤 합니다.

 

이번 포스팅에서는 Access Token과 Refresh Token이 무엇인지, 왜 필요한지, 그리고 실제 인증 절차에서는 어떻게 사용되는지를 쉽게 설명 드리겠습니다.


📌 Access Token이란?

**Access Token(엑세스 토큰)**은 사용자 인증이 완료된 후 클라이언트에게 발급되는 짧은 수명의 토큰입니다. 서버는 이 토큰을 통해 사용자의 신원을 확인하고, 해당 사용자가 요청한 리소스에 접근할 수 있는지를 판단합니다.

✅ 특징

  • 일반적으로 짧은 만료 시간(예: 15분 ~ 1시간)
  • 클라이언트가 서버에 요청할 때 헤더에 포함해서 전송
  • 탈취되었을 경우 보안에 위협이 되므로 짧은 수명 유지
GET /user/profile HTTP/1.1
Authorization: Bearer [Access Token]

🔄 Refresh Token이란?

**Refresh Token(리프레시 토큰)**은 Access Token이 만료되었을 때 새로운 Access Token을 발급받기 위한 토큰입니다. 일반적으로 Refresh Token은 더 긴 수명을 가지고 있으며, 서버 또는 인증 서버에 안전하게 저장됩니다.

✅ 특징

  • 보통 몇 시간에서 며칠 간 유효
  • Access Token이 만료되면 이를 사용해 새로운 Access Token을 요청
  • 주로 서버 측에만 저장하거나 안전하게 관리되어야 함 (클라이언트 저장은 주의 필요)

🔐 인증 절차 흐름 (OAuth2 기반)

다음은 Access Token과 Refresh Token이 사용되는 대표적인 인증 절차입니다:

1️⃣ 로그인 및 토큰 발급

  1. 사용자가 아이디/비밀번호로 로그인 요청
  2. 인증 서버가 자격 증명을 검증
  3. 인증에 성공하면 Access Token과 Refresh Token을 클라이언트에 발급

2️⃣ 인증이 필요한 API 요청

  1. 클라이언트는 Access Token을 Authorization 헤더에 담아 API 서버에 요청
  2. 서버는 토큰의 유효성을 검증하고, 요청을 처리

3️⃣ Access Token 만료 시

  1. 클라이언트는 저장된 Refresh Token을 이용해 새로운 Access Token을 요청
  2. 인증 서버는 Refresh Token을 검증하고, 새로운 Access Token 발급

4️⃣ Refresh Token도 만료된 경우

  • 사용자는 다시 로그인해야 함 (재인증)

🎯 왜 두 개의 토큰이 필요한가요?

구분목적수명저장 위치

Access Token 리소스 접근 짧음 클라이언트 (메모리, 로컬 등)
Refresh Token 새로운 Access Token 발급 클라이언트 or 서버 (보안 강화 필요)

두 토큰을 분리함으로써 보안성과 유연성을 동시에 확보할 수 있습니다:

  • Access Token 탈취 시 피해 최소화 (짧은 수명)
  • 사용자 경험 향상 (재로그인 없이 갱신 가능)

🧩 보안 팁

  • Refresh Token은 절대 노출되지 않도록 안전하게 저장해야 합니다
  • HTTPS를 통해 토큰 통신을 암호화해야 합니다
  • 토큰 재사용 방지를 위해 서버에서 블랙리스트 처리 로직을 고려할 수 있습니다

✅ 마무리 정리

  • Access Token은 리소스 서버에 접근하기 위한 토큰이며, 짧은 수명을 가짐
  • Refresh Token은 새로운 Access Token을 발급받기 위한 토큰이며, 긴 수명을 가짐
  • 두 토큰은 함께 사용되어 보안을 유지하면서도 사용자 경험을 개선할 수 있음

웹 서비스의 보안 수준을 높이기 위해 이 두 토큰의 역할과 흐름을 정확히 이해하고 사용하는 것이 매우 중요합니다. 🙌

반응형