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 키 설정 (즉시)
# 51124 서버에서 실행
echo "JWT_SECRET_KEY=[REDACTED]" >> \
/home/admin/ivada_project/skill_email/.env
docker restart skill-email
단계 2: rb8001 UUID → API 매핑 전환
# /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: 서비스 간 인증 추가
# 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 매핑 테스트
# 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 플로우 구현