diff --git a/troubleshooting/250817_happybell80_OAuth권한최소화및프로필버그수정.md b/troubleshooting/250817_happybell80_OAuth권한최소화및프로필버그수정.md new file mode 100644 index 0000000..75840d6 --- /dev/null +++ b/troubleshooting/250817_happybell80_OAuth권한최소화및프로필버그수정.md @@ -0,0 +1,136 @@ +# 250817_happybell80_OAuth권한최소화및프로필버그수정 + +## 오전 1시 23분 + +### Google OAuth 과도한 권한 문제 해결 + +#### 문제 상황 +- 사용자가 Google OAuth 로그인 시 Gmail 전체 권한 요청 화면이 나타남 +- `gmail.modify` 스코프가 요청되어 사용자가 거부 (access_denied) +- 단순 로그인에 이메일 읽기/쓰기/삭제 권한은 과도함 + +#### 원인 분석 +1. auth-server의 `app/providers/gmail.py`에서 과도한 스코프 요청 +```python +SCOPES = [ + "openid", + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/gmail.modify", # 문제! +] +``` + +2. `gmail.modify`는 사용자의 모든 이메일에 대한 읽기/쓰기/삭제 권한 +3. 로그인 목적에는 완전히 불필요한 권한 + +#### 해결 과정 + +##### 1차 시도 - 코드 수정 +- auth-server의 스코프를 최소 권한으로 변경 +```python +SCOPES = [ + "openid", + "email", # 이메일 주소만 확인 + "profile" # 이름과 프로필 사진 +] +``` +- JWT 토큰에 profile picture 추가 +- frontend-customer에서 프로필 사진 표시 지원 + +##### 2차 시도 - 서버 반영 문제 해결 +- **문제**: 코드는 수정했지만 여전히 gmail.modify 권한 요청 +- **원인**: Gitea Actions가 코드만 업데이트하고 컨테이너 재빌드 안 함 +- **해결**: 51123 서버에서 수동 재배포 +```bash +cd /home/admin/auth-server +git pull +docker-compose down +docker-compose up -d --build --force-recreate +``` + +##### 3차 시도 - Google 캐시 초기화 +- **문제**: "이미 일부 액세스 권한이 있음" 메시지 +- **원인**: Google이 이전 gmail.modify 권한을 기억 +- **해결**: + 1. https://myaccount.google.com/permissions 에서 앱 권한 삭제 + 2. 브라우저 시크릿 모드로 재시도 + +#### 결과 +- ✅ 최소 권한(openid, email, profile)만 요청 +- ✅ 사용자 신뢰도 향상 +- ✅ Google 프로필 사진 표시 기능 추가 + +### 프로필 클릭 시 로그아웃 버그 수정 + +#### 문제 상황 +- `/game` 페이지에서 프로필 아이콘 클릭 시 즉시 로그아웃됨 + +#### 원인 분석 +- `game-layout.tsx`의 126-129번 줄에서 프로필 버튼에 `logout()` 함수 연결 +```tsx +