docs: Gateway UUID 403 차단 구현 방안 업데이트
- 라우터 분리 아키텍처 문서화 - 파일 구조 및 핵심 로직 정리 - 영향 범위 명시
This commit is contained in:
parent
0a52606825
commit
417332d9e5
@ -72,32 +72,45 @@
|
||||
|
||||
---
|
||||
|
||||
## 2025-09-24 추가 수정: Slack UUID 변환 실패 시 에러 처리
|
||||
## 2025-09-24 Gateway UUID 변환 실패 시 403 차단
|
||||
|
||||
### 문제 상황
|
||||
- Gateway에서 Slack ID를 UUID로 변환 실패 시 경고만 출력하고 요청 계속 진행
|
||||
- rb8001에서 X-User-Id 헤더 없을 때 Slack ID를 UUID로 저장 시도하여 타입 오류 발생
|
||||
### 구현 방안: 라우터 분리
|
||||
|
||||
### 해결 방안
|
||||
#### 파일 구조
|
||||
```
|
||||
robeing-gateway/app/
|
||||
├── routers/slack.py # Slack 엔드포인트
|
||||
├── services/slack_proxy.py # UUID 변환 및 포워딩
|
||||
└── exceptions.py # UserNotRegisteredError
|
||||
```
|
||||
|
||||
#### 1. /home/admin/robeing-gateway/app/main.py 수정
|
||||
#### 핵심 로직
|
||||
- **url_verification**: 항상 200 반환 (UUID 체크 제외)
|
||||
- **이벤트/인터랙티브**: UUID 변환 실패 시 403 반환
|
||||
- **X-User-Id 헤더**: UUID 변환 성공 시에만 추가
|
||||
|
||||
**라인 526-532** - `/slack/events` 엔드포인트:
|
||||
- 현재: 경고만 출력
|
||||
- 수정: UUID 없으면 403 에러 반환
|
||||
### 영향 범위
|
||||
- **변경 없음**: nginx, Slack 앱 설정, rb8001
|
||||
- **필수 작업**: user 테이블에 oauth_id 사전 등록
|
||||
|
||||
**라인 583-585** - `/slack/interactive` 엔드포인트:
|
||||
- 동일하게 UUID 변환 실패 시 403 에러 반환
|
||||
---
|
||||
|
||||
#### 2. /home/admin/robeing-gateway/app/database.py 수정 (선택사항)
|
||||
## 2025-09-24 UUID 중심 원칙 확립
|
||||
|
||||
**라인 376-381** - `slack_user_to_uuid` 함수:
|
||||
- 현재: None 반환
|
||||
- 선택적 수정: ValueError 예외 발생
|
||||
### 원칙
|
||||
- 모든 내부 로직은 UUID만 사용
|
||||
- Gateway가 UUID 변환 책임
|
||||
- UUID 없으면 403 차단
|
||||
|
||||
### 기대 효과
|
||||
- Slack 사용자가 시스템에 등록되지 않은 경우 명확한 에러 메시지 반환
|
||||
- 잘못된 UUID로 인한 데이터 오염 방지
|
||||
### 영향받는 서비스
|
||||
- **rb8001:8001**: X-User-Id 헤더 필수
|
||||
- **Slack 인터랙티브**: UUID 없으면 버튼 액션 실패
|
||||
- **예외**: url_verification은 200 반환 필수
|
||||
|
||||
### 필수 작업
|
||||
1. Gateway에서 UUID 변환 실패 시 403 반환
|
||||
2. user 테이블에 Slack 사용자 사전 등록
|
||||
3. ChromaDB 검색 시 UUID만 사용
|
||||
- 디버깅 시간 단축 (명확한 에러로 원인 파악 용이)
|
||||
|
||||
### 관련 문제
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user