프로젝트 목록

(주)사운드마인드

통합 로그인 서버

여러 서비스가 하나의 계정을 공유합니다. 보호자와 자녀 단말은 네트워크 사정이 정반대라, 로그인 유지 정책부터 둘로 갈라야 했습니다.

역할
백엔드 · 운영 대시보드
기간
2025.07 ~ 현재
사용 기술
Spring BootJava 17MariaDBRedisNext.js
앱 / 클라이언트네이티브서버워커저장소외부
여러 제품이 한 계정을 공유합니다. 보호자와 자녀 단말은 토큰 정책이 다르고, 인증 이벤트는 재시도 후 보관함을 거쳐 복구됩니다.블록에 마우스를 올리면 연결된 흐름만 강조됩니다. 드래그로 이동, 버튼으로 확대할 수 있습니다.

개선 결과

  • 즉시 무효화

    토큰 재사용 감지 시 계정 토큰 전체 폐기

  • 2종

    사용자 유형별로 분리한 토큰 정책

01문제

보호자는 일반 스마트폰에서 자주 접속하니 짧은 토큰을 계속 갱신하는 표준 방식이 맞습니다. 그런데 자녀 단말은 관리 정책으로 네트워크가 평소 닫혀 있어 갱신 요청 자체가 자주 실패합니다. 같은 정책을 쓰면 자녀 단말이 수시로 로그아웃되고, 그렇다고 전부 긴 토큰을 주면 탈취당했을 때의 피해가 커집니다.

02결정

유형별로 정책을 갈랐습니다. 보호자는 단기 토큰과 회전형 갱신 토큰을 쓰고, 갱신 토큰이 재사용되면 탈취로 간주해 그 계정의 토큰 계보 전체를 즉시 무효화하고 기록을 남깁니다. 자녀 단말은 갱신 없이 장기 단일 세션으로 유지하되 세션 수를 제한합니다. 서비스 간 인증 이벤트는 재시도와 보관함을 거쳐 관리자가 복구할 수 있게 했습니다.

  • 보호자: 단기 토큰 + 회전형 갱신, 재사용 감지 시 계보 전체 폐기와 감사 기록
  • 자녀 단말: 장기 단일 세션, 동시 세션 수 제한
  • 서비스 간 알림은 지수 백오프 재시도 후 실패분을 보관해 수동 재처리 가능
  • 변경된 서비스만 골라 빌드·배포하는 스크립트와 모니터링 스택 구성

03결과

자녀 단말이 네트워크 사정으로 로그아웃되는 일이 사라졌고, 토큰 탈취 시나리오에는 재사용 감지 즉시 계정 단위로 차단됩니다. 운영 대시보드에서 세션 목록 확인과 강제 종료까지 처리할 수 있습니다.