- CLAUDE.md: 프로젝트 전체 가이드 및 규칙 정의 - CLAUDE/task-plan.md: 작업 체크리스트 및 상세 계획 - .gitignore: Git 제외 파일 설정 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
6.4 KiB
6.4 KiB
OAuth 2.0 인증 시스템 구축 작업 계획
작업 체크리스트
Phase 1: 기본 구조 설정
1. 프로젝트 디렉토리 구조 생성
- 메인 디렉토리 생성 (oauth/, services/, .docker/, .k8s/)
- OAuth 하위 디렉토리 생성 (backend/, frontend/, docs/, configs/)
- 환경별 설정 디렉토리 생성 (configs/dev/, configs/vei/, configs/prod/)
2. Docker Compose 파일 생성
- docker-compose.yml 기본 파일 작성
- MongoDB 7.0 서비스 정의
- Redis 7 서비스 정의
- APISIX Gateway 서비스 정의
- OAuth Backend 서비스 정의
- OAuth Frontend 서비스 정의
- 네트워크 및 볼륨 설정
- Health check 설정
- 서비스 간 의존성 설정 (depends_on)
3. 환경 설정 파일 생성
- .env.example 파일 생성
- .env.dev 파일 생성
- .gitignore 파일 생성
Phase 2: OAuth 백엔드 구축
1. FastAPI 프로젝트 초기화
- backend 디렉토리 구조 생성
- requirements.txt 파일 작성
- Dockerfile 작성
- .env.example 작성
2. 기본 앱 구조 생성
- app/init.py 생성
- app/main.py (FastAPI 앱 진입점) 생성
- app/config.py (환경 설정) 생성
3. 데이터베이스 모델 정의
- app/models/init.py 생성
- app/models/user.py (사용자 모델) 생성
- app/models/application.py (애플리케이션 모델) 생성
- app/models/auth_history.py (인증 히스토리 모델) 생성
4. 유틸리티 및 서비스 생성
- app/utils/init.py 생성
- app/utils/database.py (MongoDB 연결) 생성
- app/utils/security.py (보안 관련) 생성
- app/services/init.py 생성
- app/services/auth_service.py 생성
- app/services/token_service.py (JWT 처리) 생성
5. API 라우터 구현
- app/routers/init.py 생성
- app/routers/auth.py (인증 엔드포인트) 생성
- app/routers/users.py (사용자 관리) 생성
- app/routers/applications.py (애플리케이션 관리) 생성
6. 핵심 기능 구현
- JWT 토큰 생성/검증 로직
- 로그인/로그아웃 API
- OAuth 2.0 Authorization Code Flow
- Refresh Token 관리
- 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 브랜치 생성
진행 상태
현재 진행 중인 작업
- Phase 1: 기본 구조 설정
완료된 작업
- 작업 계획서 작성
다음 작업
- 프로젝트 디렉토리 구조 생성
참고사항
기술 스택
- 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
환경 변수 템플릿
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