Skip to content

[Fix] STOMP 구독 목적지 인가 정책 보강 - #359

Merged
Gimini-3 merged 6 commits into
developfrom
fix/358
Sep 27, 2026
Merged

Gimini-3 merged 6 commits into
developfrom
fix/358

Conversation

@Gimini-3

Copy link
Copy Markdown
Contributor

🔍️ 작업 내용

✨ 상세 설명

기존 목적지 interceptor는 /topic/dashboard와 정확히 같은 문자열만 ADMIN 권한을 확인하고, 나머지 구독과 client 발행은 통과시켰습니다. 그러나 Spring SimpleBroker는 구독 목적지를 pattern으로 해석하므로 일반 사용자가 /topic/** 또는 /queue/*를 구독해 관리자 dashboard event와 다른 사용자의 RAG 완료 신호를 받을 수 있었습니다.

  • client 구독 목적지를 /topic/dashboard, /user/queue/rag-answer 두 주소로 제한했습니다.
  • dashboard는 인증된 ROLE_ADMIN, RAG 개인 알림은 인증된 사용자에게만 허용했습니다.
  • pattern, broker 내부 /queue, 알 수 없는 목적지, 목적지 없는 구독은 기본 거부합니다.
  • client 발행은 SimpMessageType.MESSAGE에서 차단해 일반 SEND뿐 아니라 raw MESSAGE command 우회도 막았습니다.
  • dashboard domain에 있던 interceptor를 auth domain의 StompDestinationAuthorizationInterceptor로 옮겨 dashboard와 RAG를 함께 다루는 책임을 이름과 package에 반영했습니다.
  • 설계와 변경 전 실패 재현, 실제 WebSocket 검증 결과를 각각 docs/design, docs/test-results에 기록했습니다.

서버의 SimpMessagingTemplate push는 clientInboundChannel을 거치지 않으므로 이 차단의 영향을 받지 않습니다.

검증

  • 목적지 인가 단위 테스트: 20건 통과
  • 실제 WebSocket·SimpleBroker 통합 테스트: 5건 통과
  • STOMP 연결 인증·dashboard·HTTP JWT를 포함한 주요 회귀 테스트: 총 45건 통과
  • Backend 전체 테스트: 1,216건 통과
  • ./backend/gradlew -p backend build: 통과

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

  • 이미 열린 WebSocket session에 로그아웃, token 만료, 역할 변경을 즉시 반영하는 session 수명 정책은 별도 범위로 다룹니다.

📸 스크린샷 (선택)

  • UI 변경 없음

💬 리뷰 요구사항

  • 새 목적지를 기본 거부하는 정확한 허용 목록 정책이 현재 WebSocket 사용 범위와 맞는지 확인 부탁드립니다.
  • SimpMessageType.MESSAGE 차단이 client SEND와 raw MESSAGE를 함께 막으면서 서버 push는 유지하는지 확인 부탁드립니다.

@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: 27390ee0-7314-426f-866c-141a51229002


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 e79a57e into develop Sep 27, 2026
1 check 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