docs: Slack-Google 인증 통합 문제점 추가

- Slack OAuth와 Google OAuth 별개 운영 문제
- Slack 사용자 매핑 현황 (3개 하드코딩)
- 복잡한 관계 구조 및 권한 충돌 가능성
- 이메일 기반 자동 연결 전략 제안
- Phase 5 로드맵 추가
This commit is contained in:
happybell80 2025-08-16 11:11:51 +09:00
parent 1699e852b4
commit b8765f44ae

View File

@ -115,6 +115,33 @@ collection_name = f"{robing_id}_{user_id}_episodic"
- user_id vs username vs email 혼용
- JWT의 'sub'가 username인지 user_id인지 불명확
### 7. Slack 통합과 인증 체계 불일치 🔗
- **Slack OAuth와 Google OAuth 별개 운영**
- Slack 워크스페이스 인증 (봇 토큰)
- Google 개인 인증 (사용자 토큰)
- 두 시스템 간 연결 고리 불명확
- **Slack 사용자 매핑 문제**
- slack_user_id (U0925SXQFDK) ↔ user_id (UUID) 매핑 필요
- 현재 하드코딩된 매핑 3개만 존재
- 신규 Slack 사용자 자동 연결 방법 없음
- **복잡한 관계 구조**
```
Slack Workspace ← SlackWorkspaces 테이블
Slack User ID ← slack_user_mapping 테이블
User (UUID) ← users 테이블
Google Account (OAuth)
```
- **권한 충돌 가능성**
- Slack 봇 권한: chat:write, channels:read 등
- Google 권한: gmail.modify, calendar.events 등
- 같은 사용자가 두 가지 인증 경로 보유
## 결정 필요 사항
### 1. 주요 식별자 선택
@ -190,6 +217,33 @@ X-Username: happybell80 // 명확한 이름
- DB에 권한 레벨 저장: `oauth_scopes` 필드 추가
- Frontend에서 권한 상태 표시 및 추가 연결 버튼 제공
### 7. Slack과 Google 인증 통합 전략
```
옵션 A: 통합 인증 (하나의 주 계정)
- Google 로그인을 주 인증으로 사용
- Slack은 추가 연결 (선택적)
- 장점: 단순한 인증 흐름
- 단점: Slack 전용 사용자 지원 어려움
옵션 B: 독립 인증 (현재)
- Google과 Slack 각각 독립 인증
- 수동 매핑 필요
- 장점: 유연성
- 단점: 복잡한 관리
옵션 C: 자동 연결 (추천) ✅
- 이메일 기반 자동 매칭
- Slack 이메일 == Google 이메일 시 자동 연결
- 불일치 시 수동 연결 옵션 제공
```
**구현 방안:**
- Slack 사용자가 처음 메시지 전송 시:
1. Slack API로 이메일 조회
2. users 테이블에서 같은 이메일 검색
3. 매칭되면 자동으로 slack_user_mapping 생성
4. 없으면 임시 계정 생성 후 연결 대기
## 즉시 수정 필요 (Critical)
### 1. Frontend (robing-api.ts)
@ -240,6 +294,12 @@ collection_name = f"{robing_id}_{username}_episodic"
3. DB에 사용자별 권한 상태 저장
4. Frontend에 권한 관리 UI 추가
### Phase 5: Slack-Google 인증 통합 (2주)
1. 이메일 기반 자동 매칭 로직 구현
2. Slack 사용자 첫 메시지 시 자동 계정 생성
3. 수동 연결 UI 개발
4. 통합 대시보드 구현
## 참고 사항
- **JWT Secret**: 모든 서비스가 같은 키 공유 필요