반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- JPQL
- filternotnull
- Token
- sumof
- JPA
- Stream
- javamailsender
- entity
- 토큰기반인증
- 8080error
- 서버실행실패
- kotlin
- 자바
- foreachindexed
- 코틀린
- portconflict
- Spring
- 스프링 부트
- 오블완
- JWT
- 토큰
- 스프링
- 티스토리챌린지
- map
- 객체지향
- 웹서버오류
- api인증
- devpi
- Spring Boot
- java
Archives
- Today
- Total
DeveloPiano
Access Token과 Refresh Token 완벽 가이드 – 인증은 이렇게 작동합니다 본문
반응형

웹이나 모바일 앱 개발에서 사용자 인증은 보안의 핵심입니다. 특히 OAuth2.0 기반의 인증 시스템에서 자주 언급되는 개념이 바로 Access Token과 Refresh 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️⃣ 로그인 및 토큰 발급
- 사용자가 아이디/비밀번호로 로그인 요청
- 인증 서버가 자격 증명을 검증
- 인증에 성공하면 Access Token과 Refresh Token을 클라이언트에 발급
2️⃣ 인증이 필요한 API 요청
- 클라이언트는 Access Token을 Authorization 헤더에 담아 API 서버에 요청
- 서버는 토큰의 유효성을 검증하고, 요청을 처리
3️⃣ Access Token 만료 시
- 클라이언트는 저장된 Refresh Token을 이용해 새로운 Access Token을 요청
- 인증 서버는 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을 발급받기 위한 토큰이며, 긴 수명을 가짐
- 두 토큰은 함께 사용되어 보안을 유지하면서도 사용자 경험을 개선할 수 있음
웹 서비스의 보안 수준을 높이기 위해 이 두 토큰의 역할과 흐름을 정확히 이해하고 사용하는 것이 매우 중요합니다. 🙌
반응형
'Develop > Network' 카테고리의 다른 글
[Network] 토큰 관리 방식 : 사용자 인증 및 보안의 핵심 (0) | 2024.09.25 |
---|---|
[Network] 사용자 인증 및 시크릿 키 발급(Token, SecretKey) (0) | 2024.08.24 |