docs: OAuth 권한 분리 전략 추가

- Google OAuth 권한 과다 요청 문제점 추가
- 단계별 권한 요청 전략 제안 (기본 로그인 vs 스킬별 권한)
- 구현 방안 및 Phase 4 로드맵 추가
This commit is contained in:
happybell80 2025-08-16 11:09:04 +09:00
parent 7f6b90a1b9
commit 1699e852b4

View File

@ -106,7 +106,12 @@ collection_name = f"{robing_id}_{user_id}_episodic"
- 새 사용자 추가 시 코드 수정 필요
- 확장성 없음
### 5. 변수명 불일치 혼란 🔄
### 5. OAuth 권한 과다 요청 🔐
- 회원가입/로그인 시 Gmail 읽기/쓰기 권한(`gmail.modify`)까지 요청
- 복잡한 동의 과정으로 사용자 이탈 가능성 높음
- 이메일 기능 미사용자에게도 과도한 권한 요청
### 6. 변수명 불일치 혼란 🔄
- user_id vs username vs email 혼용
- JWT의 'sub'가 username인지 user_id인지 불명확
@ -168,6 +173,23 @@ X-Username: happybell80 // 명확한 이름
대안: 'jwt_token', 'access_token', 'robing_token'
```
### 6. OAuth 권한 분리 전략
```python
# 옵션 A: 단계별 권한 요청 (추천) ✅
기본 로그인: openid, userinfo.email, userinfo.profile
이메일 스킬: gmail.modify (별도 연결)
캘린더 스킬: calendar.events (별도 연결)
# 옵션 B: 일괄 권한 요청 (현재)
모든 권한을 한 번에 요청 (사용자 이탈 높음)
```
**구현 방안:**
- `/auth/gmail/login` - 기본 프로필 권한만 (간단한 로그인)
- `/auth/gmail/connect-email` - Gmail 권한 추가 (이메일 아이템 사용 시)
- DB에 권한 레벨 저장: `oauth_scopes` 필드 추가
- Frontend에서 권한 상태 표시 및 추가 연결 버튼 제공
## 즉시 수정 필요 (Critical)
### 1. Frontend (robing-api.ts)
@ -212,6 +234,12 @@ collection_name = f"{robing_id}_{username}_episodic"
2. 토큰 갱신 로직 구현
3. 권한 체계 구현
### Phase 4: OAuth 권한 분리 (1주)
1. 기본 로그인용 엔드포인트 구현 (최소 권한)
2. 스킬별 추가 권한 연결 엔드포인트 구현
3. DB에 사용자별 권한 상태 저장
4. Frontend에 권한 관리 UI 추가
## 참고 사항
- **JWT Secret**: 모든 서비스가 같은 키 공유 필요