Skip to content

fix: 열린 STOMP 세션에 인증 상태 변경 반영 - #361

Merged
Gimini-3 merged 8 commits into
developfrom
fix/360
Sep 27, 2026
Merged

Gimini-3 merged 8 commits into
developfrom
fix/360

Conversation

@Gimini-3

Copy link
Copy Markdown
Contributor

🔍️ 작업 내용

✨ 상세 설명

STOMP CONNECT에서 검증한 JWT와 역할은 열린 WebSocket 세션의 Principal에 고정되어, 이후 로그아웃·JWT 만료·역할 변경이 기존 구독에 반영되지 않았습니다.

  • 물리 WebSocketSession과 CONNECT 시점의 최소 인증 snapshot(userId, jti, 만료 시각, 역할)을 연결해 추적합니다.
  • 기본 5초마다 만료를 먼저 확인하고, Redis blacklist는 MGET, 현재 역할은 IN query로 최대 500개씩 일괄 재검증합니다.
  • 만료·blacklist·역할 변경 세션을 1008 Policy Violation으로 종료하고, Redis·DB 검증 실패도 REST polling fallback을 전제로 fail-closed 처리합니다.
  • 활성 세션 Gauge와 종료 사유별 Counter를 추가했습니다.
  • 설계와 변경 전 실패 재현, 실제 WebSocket 검증, 전체 회귀 결과를 문서로 남겼습니다.

검증 결과:

  • 변경 전 실제 WebSocket blacklist 시나리오: 3초 timeout으로 실패 재현
  • 세션 lifecycle 실제 WebSocket: 4건 통과
  • 관련 인증·인가·역할 회귀: 53건 통과
  • Backend 전체: 1,236건 통과
  • Backend build: 통과

🛠️ 추후 리팩토링 및 고도화 계획

  • blacklist 기록 자체의 전달 보장과 Redis persistence는 별도 운영 정책으로 다룹니다.
  • 인증 전 물리 연결 timeout·rate limit은 전송 계층 보강 범위로 남깁니다.
  • 5초보다 짧은 즉시 폐기가 필요해지면 주기 검사를 최종 정합성 장치로 유지하면서 상태 변경 이벤트를 보조 신호로 검토할 수 있습니다.

📸 스크린샷 (선택)

해당 없음

💬 리뷰 요구사항

  • Redis·DB 오류 시 열린 STOMP 연결을 닫는 fail-closed 정책이 서비스의 REST polling fallback과 맞는지 확인 부탁드립니다.
  • 기본 검사 간격 5초와 batch size 500이 초기 운영값으로 적절한지 확인 부탁드립니다.

@coderabbitai

coderabbitai Bot commented Sep 27, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository: DocGrid/docgrid/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: a12b83ee-a7a0-4a1f-97c3-f52ebac74d77


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Gimini-3
Gimini-3 merged commit 2d4d566 into develop Sep 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Fix] 열린 STOMP 세션에 인증 상태 변경 반영

1 participant