로그아웃은 왜 서버에 요청을 보내야 할까?

oversleep·2025년 2월 13일
0

Web

목록 보기
6/11
post-thumbnail

프론트엔드 개발을 하다 보면 이런 의문이 들 때가 있습니다.
"로그아웃은 그냥 로컬 스토리지에서 토큰만 지우면 되는 거 아닌가?"
얼핏 보면 그렇게 생각할 수 있지만, 실제로는 서버에 로그아웃 요청을 보내는 것이 매우 중요한 보안 절차입니다.

서버에 로그아웃 요청을 보내는 4가지 이유

1. 토큰 무효화 (Token Invalidation)

  • 로컬에서 토큰을 삭제해도, 해당 토큰은 만료 시간까지 여전히 유효합니다
  • 토큰이 탈취되었다면 누군가 그 토큰으로 계속 API를 호출할 수 있습니다
  • 서버에서 해당 토큰을 블랙리스트에 추가하거나 즉시 무효화해야 합니다

2. 서버 세션 정리

  • 서버에 저장된 사용자 관련 임시 데이터를 정리할 수 있습니다
  • RefreshToken을 사용하는 경우, 서버에 저장된 RefreshToken도 함께 제거해야 합니다
  • 연결된 웹소켓 세션 등도 정리가 필요할 수 있습니다

3. 감사(Audit) 로그

  • 보안을 위해 사용자의 로그인/로그아웃 시간을 기록해야 합니다
  • 비정상적인 접근이나 보안 사고 발생 시 분석할 수 있는 자료가 됩니다
  • 사용자의 서비스 이용 패턴을 분석하는 데도 활용될 수 있습니다

4. 다중 기기 로그아웃 지원

  • 한 계정이 여러 기기에서 로그인된 경우가 많습니다
  • "모든 기기에서 로그아웃" 같은 기능을 구현하려면 서버의 도움이 필요합니다
  • 다른 기기의 세션도 함께 종료할 수 있어야 합니다

결론

단순히 클라이언트의 토큰을 삭제하는 것만으로는 완전한 로그아웃이라고 할 수 없습니다.
보안성과 안정성을 위해서는 반드시 서버에 로그아웃 요청을 보내어 관련된 모든 세션과 토큰을 적절히 정리해야 합니다.

profile
궁금한 것, 했던 것, 시행착오 그리고 기억하고 싶은 것들을 기록합니다.

0개의 댓글