
React Native로 앱을 개발하면서 백엔드 팀으로부터 RefreshToken 인증 방식으로의 변경 요청을 받았습니다. 이때 한 가지 의문이 들었습니다:
"앱은 개인 기기라서 로그인 상태를 계속 유지해도 되는데, 왜 RefreshToken으로 주기적 인증이 필요할까?"
이 의문을 풀어가는 과정에서 제가 잘못 이해하고 있던 두 가지 개념을 발견했습니다.
저는 이 두 개념을 하나로 생각하고 있었습니다.
하지만 이는 완전히 다른 목적을 가진 별개의 메커니즘입니다:
보안은 여러 레이어에서 다뤄져야 한다는 것을 이해하지 못했습니다:
애플리케이션 레벨 보안
네트워크 레벨 보안
이제 제 의문의 답을 찾을 수 있었습니다:
토큰 탈취 위험 최소화
안전한 토큰 갱신
서버 측 제어 가능
앱의 로그인 상태 유지
RefreshToken 인증
앱이라고 해서 보안을 간과해서는 안 됩니다.
로그인 상태 유지는 사용자 편의성을 위한 것이고, RefreshToken 인증은 보안을 위한 것입니다. 이 두 가지는 상호 보완적인 관계이며, 둘 다 필요한 메커니즘입니다.
앞으로도 이런 의문이 들 때는 각 기능의 목적을 명확히 이해하고, 보안의 여러 레이어를 고려하면서 개발해야겠다는 교훈을 얻었습니다.