# Slack 인증 통합 개선 - 완료 ## 작성일: 2025-08-28 ## 작성자: 51123 서버 관리자 ## 상태: 완료 - 3단계 모두 완료 (2025-08-28 20:30) ## 목표: Slack 인증을 51123 매핑 API 기반으로 통합 --- ## 1. 현재 상황 분석 ### 51123 서버 (auth-server) ✅ - **Slack OAuth**: user 테이블에 oauth_provider='slack'로 저장 - **사용자 인증**: JWT 토큰 기반 ### 51124 서버 (rb8001) - **Slack 서명 검증**: HMAC-SHA256 구현됨 ✅ - **UUID 변환**: ~~UUID5 사용 중~~ → 51123 매핑 API 사용 ✅ (2025-08-28 완료) - **서비스 통신**: skill-email에 인증 헤더 없이 body로만 전달 ⚠️ - **skill-email JWT**: ~~기본값~~ → 정상 설정 완료 ✅ (2025-08-28) --- ## 2. 기존 데이터베이스 구조 (이미 구현됨) ### slack_workspaces 테이블 (51123) - workspace별 봇 토큰 관리 - team_id 기준 unique 제약 - bot_token, bot_user_id, scopes 저장 ### user 테이블 (51123) - oauth_provider='slack'로 Slack 사용자 관리 - oauth_id에 Slack user_id 저장 --- ## 3. 주요 문제점 ### rb8001 ID 처리 ✅ 완료 | 기존 방식 | 개선 완료 | 상태 | |----------|----------|------| | UUID 생성(DNS namespace, slack_id) | user 테이블 조회 | ✅ 완료 | | 로컬 변환으로 UUID 생성 | DB 기반 UUID 사용 | ✅ 완료 | | skill-email에 Slack ID 전달 | UUID 전달로 통일 | ✅ 완료 | ### 서비스 간 통신 보안 - **skill-email JWT 키**: ~~기본값~~ → 정상 설정 완료 ✅ (2025-08-28) - **인증 헤더**: ~~없음~~ → Bearer 토큰 구현 완료 ✅ (2025-08-28) - **Slack OAuth**: Frontend → auth-server 경유 필요 (향후 구현) --- ## 4. 개선 방안 ### 단계 1: skill-email JWT 키 설정 (즉시) ```bash # 51124 서버에서 실행 echo "JWT_SECRET_KEY=[REDACTED]" >> \ /home/admin/ivada_project/skill_email/.env docker restart skill-email ``` ### 단계 2: rb8001 UUID → API 매핑 전환 ```python # /rb8001/app/skills/email_integration.py 수정 # 기존: user_uuid = str(uuid.uuid(namespace, user_id)) # 변경: async def get_uuid_from_slack(slack_id: str): response = await httpx.get( f"http://192.168.0.100:9000/api/slack/mapping/{slack_id}" ) return response.json()["user_id"] ``` ### 단계 3: 서비스 간 인증 추가 ```python # rb8001 → skill-email 호출 시 headers = {"Authorization": f"Bearer {internal_token}"} await http_client.post(url, json=data, headers=headers) ``` --- ## 5. 구현 우선순위 | 우선순위 | 작업 | 위치 | 상태 | |---------|------|------|------| | 1 | ~~skill-email JWT_SECRET_KEY 설정~~ | ~~51124 서버~~ | ✅ 완료 | | 2 | ~~UUID → 매핑 API 전환~~ | ~~rb8001~~ | ✅ 완료 | | 3 | ~~서비스 간 인증 헤더 추가~~ | ~~rb8001, skill-email~~ | ✅ 완료 | | 4 | Slack OAuth auth-server 경유 | auth-server, frontend | 🔜 향후 | --- ## 6. 검증 방법 ### API 매핑 테스트 ```bash # 51123에서 Slack → UUID 매핑 확인 curl http://192.168.0.100:9000/api/slack/mapping/U0925SXQFDK # 응답: {"user_id": "1e16e9d5-59f3-54da-a661-8abeabff4230", ...} ``` ### 완료된 개선 사항 (2025-08-28 20:30) #### 1단계: 환경설정 ✅ - skill-email JWT_SECRET_KEY 설정 완료 - rb8001, skill-email INTERNAL_API_KEY 설정 완료 #### 2단계: ID 체계 통합 ✅ - rb8001 UUID → user 테이블 조회로 전환 완료 - DB 기반 UUID로 데이터 일관성 확보 #### 3단계: 서비스 간 인증 ✅ - rb8001 → skill-email Bearer 토큰 인증 구현 - 401 Unauthorized 검증 로직 추가 ### 향후 작업 - Frontend → auth-server Slack OAuth 플로우 구현