From 77bfe61db9bed69ed8f2dbb95b7c1ca8971089af Mon Sep 17 00:00:00 2001 From: happybell80 Date: Sat, 16 Aug 2025 11:29:52 +0900 Subject: [PATCH] =?UTF-8?q?docs:=2051124=20=EC=84=9C=EB=B2=84=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=20=EC=A0=95=EB=B3=B4=EB=A1=9C=20=EB=AC=B8=EC=84=9C=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ChromaDB 컬렉션명 생성 로직 정확한 경로 및 코드 추가 - Robing 서비스 정확한 포트 번호 (8001, 10508, 10408) - JWT Secret 불일치 문제 추가 - user_id vs username 처리 문제 구체화 - 환경변수 현황 업데이트 --- ideas/auth_system_analysis.md | 44 +++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/ideas/auth_system_analysis.md b/ideas/auth_system_analysis.md index 2b7899d..cbedbae 100644 --- a/ideas/auth_system_analysis.md +++ b/ideas/auth_system_analysis.md @@ -42,7 +42,8 @@ #### 환경 변수 - JWT_SECRET_KEY: `ro-being-auth-jwt-secret-key-2024` - JWT_ALGORITHM: `HS256` -- JWT_ACCESS_TOKEN_EXPIRE_MINUTES: 30일 +- JWT_EXPIRATION_DAYS: 30 (일) # 코드에서 사용 +- JWT_ACCESS_TOKEN_EXPIRE_MINUTES: 30 (분) # .env에만 존재, 미사용 #### 이메일-유저명 매핑 (하드코딩) ```python @@ -69,7 +70,7 @@ export async function sendMessage(text: string, userId: string = 'test_user') { } ``` -### 4. Robing Gateway (포트 10100) +### 4. Robing Gateway (포트 8100) #### 현재 처리 방식 ```python @@ -82,11 +83,23 @@ x_user_id: Optional[str] = Header(None) # X-User-Id 헤더만 확인 #### ChromaDB 컬렉션명 생성 ```python -# storage.py:84 (추정) -collection_name = f"{robing_id}_{user_id}_episodic" +# rb10508_micro/app/core/memory/storage.py +collection_name = f"{settings.ROBING_ID}_{username if username else 'default'}_{memory_type}" # 현재: rb10508_test_default_episodic (모든 사용자 공유!) + +# 문제: endpoints.py에서 username 전달하지 않음 +# endpoints.py:22 - 기본값: "default_user" ``` +#### 서비스 포트 +- rb8001: 포트 8001 +- rb10508_micro: 포트 10508 +- rb10408_test: 포트 10408 + +#### 환경변수 현황 +- AUTH_SERVER_URL: `http://192.168.219.45:9000` (설정됨) +- JWT_SECRET_KEY: `your-jwt-secret-key` (기본값, 변경 필요) + ## 주요 문제점 ### 1. 인증 토큰 미전송 ⚠️ @@ -99,8 +112,9 @@ collection_name = f"{robing_id}_{user_id}_episodic" - X-User-Id 헤더만 확인 (누구나 위조 가능) ### 3. 사용자 식별 실패 ⚠️ -- username이 제대로 전달되지 않아 'default'로 폴백 -- ChromaDB 컬렉션을 모든 사용자가 공유 +- endpoints.py에서 username 파라미터를 storage.py로 전달하지 않음 +- user_id는 받지만 username으로 변환하지 않음 +- ChromaDB 컬렉션을 모든 사용자가 공유 (rb10508_test_default_episodic) ### 4. 이메일-유저명 매핑 하드코딩 📝 - 새 사용자 추가 시 코드 수정 필요 @@ -113,7 +127,8 @@ collection_name = f"{robing_id}_{user_id}_episodic" ### 6. 변수명 불일치 혼란 🔄 - user_id vs username vs email 혼용 -- JWT의 'sub'가 username인지 user_id인지 불명확 +- JWT의 'sub'에 username 저장 중 (gmail.py:184) +- endpoints.py는 user_id 사용, storage.py는 username 필요 ### 7. Slack 통합과 인증 체계 불일치 🔗 - **Slack OAuth와 Google OAuth 별개 운영** @@ -142,6 +157,11 @@ collection_name = f"{robing_id}_{user_id}_episodic" - Google 권한: gmail.modify, calendar.events 등 - 같은 사용자가 두 가지 인증 경로 보유 +### 8. JWT Secret 불일치 🔑 +- Auth Server: `ro-being-auth-jwt-secret-key-2024` +- Robing Services: `your-jwt-secret-key` (기본값) +- 토큰 검증 시 실패할 수 있음 + ## 결정 필요 사항 ### 1. 주요 식별자 선택 @@ -265,10 +285,14 @@ if authorization: username = payload.get("sub") # 또는 username ``` -### 3. Robing Service (storage.py) +### 3. Robing Service (rb10508_micro) ```python -# username 기반 컬렉션 생성 -collection_name = f"{robing_id}_{username}_episodic" +# endpoints.py 수정 필요: +# 1. JWT 토큰에서 username 추출 +# 2. storage 함수 호출 시 username 전달 + +# storage.py는 이미 준비됨: +collection_name = f"{settings.ROBING_ID}_{username if username else 'default'}_{memory_type}" ``` ## 단계별 구현 계획