-
토큰 갱신을 통한 자동 로그인 구현 가이드카테고리 없음 2025. 11. 21. 16:53
"유저가 로그아웃하기 전까지는 알아서 로그인 유지되게 하기”
웹/앱 서비스를 만들다 보면 가장 많이 고민하는 기능 중 하나가 바로 자동 로그인이다.
한 번 로그인하면 앱을 닫았다 다시 열어도, 다음 날 다시 접속해도,
유저가 다시 로그인하지 않도록 하는 기능이다.이 자동 로그인의 핵심이 바로 토큰 갱신(Token Refresh) 이다.
왜 토큰 갱신이 필요한가?
대부분의 서비스는 로그인 후 JWT(Access Token)를 발급받는다.
하지만 JWT는 보안상 유효기간이 매우 짧아야 한다. -> 이 보안상문제는 다음 시간에 계속하겠다 (그림을 못그리겠음)예:
- Access Token: 10분~30분
- Refresh Token: 2주~4주
문제는
Access Token이 만료되면 로그인 상태가 풀린다.유저 입장에서는 갑자기 로그인이 끊기는 경험이 발생한다.
모바일 앱에서는 특히 치명적이다.이를 해결하기 위해 등장한 개념이 Refresh Token을 통한 자동 갱신이다.
토큰 구조 간단 이해자동 로그인에서 사용하는 토큰은 보통 2개:
Access Token API 요청 인증용 / 만료 빠름 메모리, localStorage, Secure Storage Refresh Token Access Token 재발급용 / 만료 김 HttpOnly Cookie 또는 Secure Storage 자동 로그인은 이 흐름으로 작동한다.
Access Token 만료 → 서버에 Refresh Token 보내서 검증 → 새로운 Access Token 발급 → 자동 로그인 유지!유저는 아무것도 느끼지 못한다.
자동 로그인 전체 흐름(자동 갱신 로직)
1. 로그인 성공
→ Access Token + Refresh Token 발급
→ Refresh Token은 HttpOnly 쿠키로 저장
2. API 요청 시 Access Token 만료
→ 401 Unauthorized 응답
3. 클라이언트는 Refresh Token으로 자동 재발급 요청
(별도 엔드포인트: /auth/refresh)
4. 서버가 Refresh Token 검증 성공
→ 새로운 Access Token 발급
5. 클라이언트 Access Token 갱신
→ 요청 다시 재시도
→ 로그인 유지 성공!이런 flow 가 진행이 되게된다.
서버 역할은 단순하다:
- Refresh Token이 유효한지 검사
- 유효하면 새로운 Access Token 발급
- 클라이언트에게 반환
이번에 새롭게 node 를 백앤드로 구성하고 모바일앱을 클라이언트 단으로 판단하다보니 sns 로그인과 자동로그인에 대한 내용이 확 정리가 되는 느낌이다. 이제 정말 언제든지 내 서비스를 만들 수 있다는것에 설렘을 느끼며 이번포스팅을 마무리 하겠다