# OAuth 2.0 인증 시스템 구축 작업 계획 ## 작업 체크리스트 ### Phase 1: 기본 구조 설정 #### 1. 프로젝트 디렉토리 구조 생성 - [x] 메인 디렉토리 생성 (oauth/, services/, .docker/, .k8s/) - [x] OAuth 하위 디렉토리 생성 (backend/, frontend/, docs/, configs/) - [x] 환경별 설정 디렉토리 생성 (configs/dev/, configs/vei/, configs/prod/) #### 2. Docker Compose 파일 생성 - [x] docker-compose.yml 기본 파일 작성 - [x] MongoDB 7.0 서비스 정의 - [x] Redis 7 서비스 정의 - [ ] ~~APISIX Gateway 서비스 정의~~ (나중에 추가) - [x] OAuth Backend 서비스 정의 - [x] OAuth Frontend 서비스 정의 - [x] 네트워크 및 볼륨 설정 - [x] Health check 설정 - [x] 서비스 간 의존성 설정 (depends_on) #### 3. 환경 설정 파일 생성 - [x] .env.example 파일 생성 - [x] .env.dev 파일 생성 - [x] .gitignore 파일 생성 --- ### Phase 2: OAuth 백엔드 구축 #### 1. FastAPI 프로젝트 초기화 - [x] backend 디렉토리 구조 생성 - [x] requirements.txt 파일 작성 - [x] Dockerfile 작성 - [x] .env.example 작성 #### 2. 기본 앱 구조 생성 - [x] app/__init__.py 생성 - [x] app/main.py (FastAPI 앱 진입점) 생성 - [x] app/config.py (환경 설정) 생성 #### 3. 데이터베이스 모델 정의 - [x] app/models/__init__.py 생성 - [x] app/models/user.py (사용자 모델) 생성 - [x] app/models/application.py (애플리케이션 모델) 생성 - [x] app/models/auth_history.py (인증 히스토리 모델) 생성 #### 4. 유틸리티 및 서비스 생성 - [x] app/utils/__init__.py 생성 - [x] app/utils/database.py (MongoDB 연결) 생성 - [x] app/utils/security.py (보안 관련) 생성 - [x] app/services/__init__.py 생성 - [x] app/services/auth_service.py 생성 - [x] app/services/token_service.py (JWT 처리) 생성 #### 5. API 라우터 구현 - [x] app/routers/__init__.py 생성 - [x] app/routers/auth.py (인증 엔드포인트) 생성 - [x] app/routers/users.py (사용자 관리) 생성 - [x] app/routers/applications.py (애플리케이션 관리) 생성 #### 6. 핵심 기능 구현 - [x] JWT 토큰 생성/검증 로직 - [x] 로그인/로그아웃 API - [x] OAuth 2.0 Authorization Code Flow - [x] Refresh Token 관리 - [x] 3단계 권한 체계 (System Admin/Group Admin/User) --- ### Phase 3: OAuth 프론트엔드 구축 #### 1. React + Vite 프로젝트 초기화 - [ ] Vite로 React 프로젝트 생성 - [ ] TypeScript 설정 - [ ] package.json 의존성 설정 - [ ] tsconfig.json 설정 - [ ] vite.config.ts 설정 - [ ] Dockerfile 작성 #### 2. MUI 및 기본 설정 - [ ] Material-UI 설치 및 설정 - [ ] @emotion/react, @emotion/styled 설치 - [ ] @mui/icons-material 설치 - [ ] 테마 설정 파일 생성 - [ ] 글로벌 스타일 설정 #### 3. 프로젝트 구조 생성 - [ ] src/components/ 디렉토리 구조 생성 - [ ] src/pages/ 디렉토리 생성 - [ ] src/services/ 디렉토리 생성 - [ ] src/contexts/ 디렉토리 생성 - [ ] src/hooks/ 디렉토리 생성 - [ ] src/utils/ 디렉토리 생성 - [ ] src/types/ 디렉토리 생성 #### 4. 핵심 컴포넌트 개발 - [ ] AuthContext.tsx (인증 컨텍스트) 생성 - [ ] Login.tsx (로그인 페이지) 생성 - [ ] Register.tsx (회원가입 페이지) 생성 - [ ] Dashboard.tsx (대시보드) 생성 - [ ] Applications.tsx (애플리케이션 관리) 생성 #### 5. API 서비스 구현 - [ ] api.ts (API 클라이언트) 생성 - [ ] 인증 API 연동 - [ ] 사용자 API 연동 - [ ] 애플리케이션 API 연동 #### 6. 라우팅 설정 - [ ] react-router-dom 설정 - [ ] 보호된 라우트 구현 - [ ] 네비게이션 구현 --- ### Phase 4: 통합 및 테스트 #### 1. Docker Compose 통합 - [ ] 모든 서비스 Docker 빌드 테스트 - [ ] docker-compose up 실행 테스트 - [ ] 서비스 간 연결 확인 - [ ] Health check 동작 확인 #### 2. API Gateway 설정 - [ ] APISIX 라우팅 규칙 설정 - [ ] Backend API 프록시 설정 - [ ] Frontend 정적 파일 서빙 설정 - [ ] CORS 정책 설정 #### 3. End-to-End 테스트 - [ ] 사용자 회원가입 플로우 테스트 - [ ] 로그인/로그아웃 테스트 - [ ] OAuth 2.0 인증 플로우 테스트 - [ ] 권한 관리 테스트 - [ ] 애플리케이션 관리 테스트 --- ### Phase 5: 배포 준비 #### 1. Kubernetes 매니페스트 작성 - [ ] Namespace 정의 - [ ] ConfigMap 생성 - [ ] Secret 생성 - [ ] Deployment 정의 - [ ] Service 정의 - [ ] Ingress 설정 #### 2. 환경별 설정 완료 - [ ] 개발 환경 (dev) 설정 완료 - [ ] 검증 환경 (vei) 설정 완료 - [ ] 운영 환경 (prod) 설정 완료 #### 3. 보안 체크 - [ ] 환경별 Secret Key 분리 - [ ] HTTPS 설정 - [ ] Rate Limiting 설정 - [ ] XSS/CSRF 방지 설정 - [ ] 민감 정보 암호화 #### 4. 백업 및 모니터링 - [ ] 백업 스크립트 작성 - [ ] Cron job 설정 - [ ] 로깅 설정 - [ ] 모니터링 대시보드 설정 --- ### Phase 6: 문서화 및 Git 관리 #### 1. 문서화 - [ ] API 문서 작성 (OpenAPI 3.0) - [ ] 사용자 가이드 작성 - [ ] 관리자 가이드 작성 - [ ] 트러블슈팅 가이드 작성 #### 2. Git 저장소 관리 - [ ] Git 초기화 - [ ] .gitignore 설정 - [ ] 초기 커밋 생성 - [ ] 원격 저장소 연결 (http://gitea.yakenator.io/aimond/works.git) - [ ] main 브랜치로 푸시 - [ ] develop 브랜치 생성 --- ## 진행 상태 (2025-01-05 업데이트) ### 완료된 작업 - ✅ Phase 1: 기본 구조 설정 (완료) - ✅ Phase 2: OAuth 백엔드 구축 (완료) ### 현재 대기 중인 작업 - ⏳ Phase 3: OAuth 프론트엔드 구축 (다음 세션에서 진행) ### 다음 작업 - React + Vite + TypeScript + MUI 프론트엔드 구축 - 로그인/회원가입 페이지 구현 - OAuth 2.0 인증 플로우 UI 구현 --- ## 참고사항 ### 기술 스택 - **Frontend**: React 18 + Vite + TypeScript + Material-UI - **Backend**: Python 3.11 + FastAPI + Motor (MongoDB async) - **Database**: MongoDB 7.0 - **Cache/Queue**: Redis 7 - **API Gateway**: APISIX - **Container**: Docker + Docker Compose - **Orchestration**: Kubernetes (Production) ### 접속 URL (개발 환경) - **API Gateway**: http://localhost:9080 - **APISIX Dashboard**: http://localhost:9000 (admin/admin123) - **Frontend**: http://localhost:5173 - **Backend API**: http://localhost:9080/api/v1 - **MongoDB**: mongodb://localhost:27017 - **Redis**: redis://localhost:6379 ### 환경 변수 템플릿 ```env SECRET_KEY=3bf17c7f-5446-4a18-9cb3-f885eba501e8 MONGODB_URL=mongodb://localhost:27017 DATABASE_NAME=oauth_db REDIS_URL=redis://localhost:6379 ENVIRONMENT=dev BACKUP_PATH=/var/backups/oauth ARCHIVE_PATH=/var/archives/oauth ```