이전에 구현한 JWT 인증 방식은 Access Token만 사용했습니다. 이 방식은 몇 가지 한계점을 가집니다.
Access Token의 딜레마:
해결책 (Refresh Token 전략): Access Token과 Refresh Token이라는 두 종류의 토큰을 함께 사용하는 방식입니다.
| 토큰 종류 | Access Token | Refresh Token |
|---|---|---|
| 역할 | 실제 API 요청에 대한 인증 | Access Token 재발급 전용 |
| 만료 시간 | 짧음 (e.g., 15분 ~ 1시간) | 김 (e.g., 7일 ~ 30일) |
| 전송 위치 | Authorization 헤더 (매 요청마다 전송) | Access Token 재발급 요청 시에만 전송 |
| 저장 위치 | (클라이언트) 메모리, 로컬 스토리지 | (클라이언트) Http-Only 쿠키 (더 안전) |
401 Unauthorized 에러를 받습니다./auth/refresh)로 조용히 요청을 보냅니다.OAuth2는 사용자가 특정 서비스(우리의 앱)에게, 자신의 계정이 있는 다른 서비스(e.g., Google, Kakao)의 특정 자원(e.g., 프로필 정보)에 접근할 수 있는 권한을 부여하는 "인가(Authorization)"를 위한 표준 프로토콜입니다.
핵심 아이디어: 우리 서비스가 사용자의 Google/Kakao 비밀번호를 직접 받지 않고도, 신뢰할 수 있는 외부 서비스로부터 인증을 위임받는 안전한 방식입니다.
Client ID, Client Secret과 함께 Google 인증 서버로 보냅니다.passport-google-oauth20, passport-kakao 등)와 그 Strategy들을 사용하여, 위와 같은 복잡한 OAuth2 흐름을 매우 구조적이고 편리하게 구현할 수 있습니다.