From 396756cc683783e488ba88c8f7f673b07f37376e Mon Sep 17 00:00:00 2001 From: 0914eagle <0914eagle@gmail.com> Date: Sun, 31 Aug 2025 16:36:16 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=AC=EB=A0=89=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B3=BC=EC=A0=95=EA=B3=BC=20todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plans/250831_todo_and_tech_debt.md | 148 +++++++++++++++++++++++++---- 1 file changed, 130 insertions(+), 18 deletions(-) diff --git a/plans/250831_todo_and_tech_debt.md b/plans/250831_todo_and_tech_debt.md index a7a672f..4c667f0 100644 --- a/plans/250831_todo_and_tech_debt.md +++ b/plans/250831_todo_and_tech_debt.md @@ -1,28 +1,56 @@ # TODO 및 기술 부채 정리 ## 작성일: 2025년 8월 31일 +## 최종 수정: 2025년 8월 31일 16:35 -## 1. 긴급 해결 필요 사항 🔴 +## 250831 Slack OAuth 구현 완료 후 남은 과제 -### Git Merge Conflict 해결 -**영향받는 파일들**: -- `/home/admin/auth-server/app/providers/gmail_passport.py` (HEAD vs eaed063) -- `/home/admin/auth-server/app/providers/gmail.py` -- `/home/admin/auth-server/app/api/gmail_refresh.py` +### 1. 임시 코드 방식 통일 필요 🔴 -**충돌 내용**: -- HEAD: 최신 변경사항 (UUID/username 처리 개선) -- eaed063: rb8001 크론잡 트러블슈팅 관련 변경 +**현재 상황**: +- Gmail 로그인: 임시 코드 → `/auth/verify` → JWT +- Slack 로그인: 임시 코드 → `/auth/verify` → JWT +- 프론트엔드가 통일된 방식 사용 중 -**해결 방법**: -```bash -cd /home/admin/auth-server -git status -# 각 파일 수동 병합 필요 -git add . -git commit -m "fix: merge conflicts - Slack OAuth implementation" +**문제점**: +- 임시 코드 사용이 불필요한 복잡도 추가 +- Redis 의존성 증가 +- 60초 TTL로 인한 타이밍 이슈 가능성 + +**개선 방안**: +```javascript +// Option 1: JWT 직접 전달 (보안 검토 필요) +return RedirectResponse(f"{redirect_uri}#token={jwt_token}") + +// Option 2: Secure cookie 사용 +response = RedirectResponse(redirect_uri) +response.set_cookie("auth_token", jwt_token, secure=True, httponly=True) ``` +### 2. python-multipart 의존성 이슈 🟡 + +**문제 발생**: +- Slack OIDC의 `response_mode=form_post` 처리 실패 +- `await request.form()` 호출 시 AssertionError 발생 + +**해결**: +- `requirements.txt`에 `python-multipart>=0.0.6` 추가 +- Docker 이미지 재빌드 완료 + +**향후 고려사항**: +- CI/CD 파이프라인에 의존성 체크 추가 +- 개발/프로덕션 requirements 분리 검토 + +## 2. 긴급 해결 필요 사항 🔴 + +### ✅ Git Merge Conflict 해결 완료 +**해결일**: 2025-08-31 16:15 +**해결 방법**: +- rebase 대신 merge 전략으로 변경 +- `git config pull.rebase false` 설정 +- 충돌 파일 수동 병합 후 push 완료 +- 커밋: `5bb14a6` - merge: Slack OAuth implementation with upstream changes + ### DB 스키마 불일치 **문제**: - `companies` 테이블 vs `workspaces` 테이블 공존 @@ -45,13 +73,97 @@ SlackWorkspace.workspace_id → workspaces.id (실제로는 company_id) 3. FK 관계 재설정 4. 모델 파일 통일 -## 2. 중요도 높음 🟡 +### 3. 환경 변수 하드코딩 제거 필요 🟡 -### Frontend-Backend 인증 방식 불일치 +**현재 하드코딩된 값들**: +```python +# app/providers/slack.py +login_callback_url = "https://auth.ro-being.com/auth/slack/login/callback" # Line 175 +redirect_uri = state_info.get("redirect_uri", "http://localhost:3000") # Line 268 + +# frontend-customer/src/contexts/auth-context.tsx +fetch('https://auth.ro-being.com/auth/verify', { # Line 79 +``` + +**개선 방안**: +- 환경변수로 추출 필요 +- 개발/스테이징/프로덕션 환경 분리 + +### 4. 사용자 매핑 로직 개선 필요 🟡 + +**현재 로직**: +1. slack_user_mapping 확인 +2. 없으면 email로 사용자 조회 +3. 없으면 새 사용자 생성 + +**문제점**: +- email이 변경되면 중복 계정 생성 가능 +- workspace 없이 로그인 시 매핑 생성 불가 +- username 생성 로직이 분산됨 + +**개선 방안**: +```python +# 통합 사용자 식별 서비스 필요 +class UserIdentityService: + def find_or_create_user(provider, provider_id, email, metadata) + def link_accounts(user_id, provider, provider_id) + def merge_duplicate_users(primary_id, duplicate_ids) +``` + +## 3. 중요도 높음 🟡 + +### ✅ Frontend-Backend 인증 방식 불일치 해결 완료 +**해결일**: 2025-08-31 16:25 +**해결 방법**: +- 프론트엔드 코드 수정하여 `/auth/verify` 엔드포인트 사용 +- Gmail과 Slack 모두 동일한 임시 코드 방식으로 통일 +- 커밋: `4cd28f1` - fix: Slack OAuth 로그인 + +### Frontend-Backend 인증 방식 최종 개선 **현재 상태**: - Frontend: Gmail 방식 (`/auth/verify` 임시 코드) - Slack: JWT 직접 전달 계획 → 임시 코드로 변경 +## 4. 250831 작업 요약 + +### 완료된 작업 ✅ +1. **Slack OAuth 2.0 (OIDC) 로그인 구현** + - `/auth/slack/login` 엔드포인트 구현 + - `/auth/slack/login/callback` POST/GET 지원 + - JWT 토큰 발급 (30일 유효기간) + - Redis 임시 코드 저장 (60초 TTL) + +2. **사용자 매핑 시스템** + - slack_user_mapping 테이블 활용 + - 하이브리드 접근: Slack ID → Email fallback + - 자동 사용자 생성 + +3. **프론트엔드 통합** + - auth-context.tsx 수정 + - `/auth/verify` 엔드포인트 사용 + - Gmail과 동일한 방식으로 통일 + +4. **배포 및 운영** + - python-multipart 의존성 추가 + - Docker 이미지 재빌드 + - nginx 권한 문제 해결 + +### 미해결 과제 📋 +1. **기술 부채** + - 임시 코드 방식 제거 검토 + - 환경변수 하드코딩 제거 + - DB 스키마 통일 (companies → workspaces) + +2. **개선 사항** + - 사용자 통합 인증 서비스 + - OAuth 토큰 갱신 로직 + - 에러 핸들링 강화 + +3. **문서화** + - API 문서 업데이트 + - 배포 가이드 작성 + - 트러블슈팅 가이드 추가 + **영향**: - 불필요한 Redis 호출 - 60초 시간 제한