슬렉 로그인 과정과 todos
This commit is contained in:
parent
107fd74b01
commit
396756cc68
@ -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초 시간 제한
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user