docs: UUID vs username 혼용 문제 RESOLVED - 전체 시스템 UUID 기반 인증 구현 완료
This commit is contained in:
parent
72147aeecc
commit
33ac91bc9f
@ -2,19 +2,19 @@
|
||||
|
||||
## 작성일: 2025-08-27
|
||||
## 작성자: 51123 서버 관리자
|
||||
## 상태: 🔴 CRITICAL - 즉시 해결 필요
|
||||
## 상태: ✅ RESOLVED - 2025-08-27 16:30 해결 완료
|
||||
## 영향 범위: 전체 시스템 (Auth, Gateway, Frontend, rb8001, DB)
|
||||
## 위험 수준: 매우 높음
|
||||
## 위험 수준: ~~매우 높음~~ → 해결됨
|
||||
|
||||
---
|
||||
|
||||
## 1. 문제 요약
|
||||
|
||||
### 🚨 핵심 문제
|
||||
**시스템 전체가 UUID와 username을 구분하지 못해 데이터 무결성 파괴**
|
||||
- JWT `sub` 클레임에 UUID 대신 username 저장
|
||||
- Frontend가 하드코딩된 문자열 사용 ('test_user', 'default_user')
|
||||
- DB에 UUID 대신 username/slack_id 저장되어 외래키 제약 위반
|
||||
### ~~🚨 핵심 문제~~ ✅ 해결 완료
|
||||
**~~시스템 전체가 UUID와 username을 구분하지 못해 데이터 무결성 파괴~~**
|
||||
- ~~JWT `sub` 클레임에 UUID 대신 username 저장~~ → ✅ UUID 사용으로 수정
|
||||
- ~~Frontend가 하드코딩된 문자열 사용~~ → ✅ UUID 저장 및 전송
|
||||
- ~~DB에 UUID 대신 username/slack_id 저장~~ → ✅ UUID 정상 처리
|
||||
|
||||
### 실제 사례
|
||||
- User: happybell80
|
||||
@ -214,25 +214,40 @@ SELECT id, username FROM users WHERE username='happybell80';
|
||||
|
||||
## 8. 결론
|
||||
|
||||
**현재 시스템은 UUID와 username을 구분하지 못해 데이터 무결성이 깨진 상태**
|
||||
**✅ UUID vs username 혼용 문제 해결 완료**
|
||||
|
||||
### 즉시 필요한 조치
|
||||
1. auth-server: JWT `sub`에 UUID 사용
|
||||
2. Frontend: localStorage에 UUID 저장
|
||||
3. rb8001: UUID와 username 구분 처리
|
||||
### 적용된 해결책:
|
||||
1. auth-server: JWT `sub`에 UUID 사용 ✅
|
||||
2. Frontend: localStorage에 UUID 저장 ✅
|
||||
3. rb8001: UUID와 username 구분 처리 ✅
|
||||
4. Gateway: UUID 기반 인증 정상 작동 ✅
|
||||
|
||||
### 예상 작업 시간
|
||||
- auth-server 수정: **10분** (Line 209, 223만 수정)
|
||||
- Frontend 수정: 1시간
|
||||
- rb8001 수정: 30분
|
||||
- 테스트 및 검증: 1시간
|
||||
- **총 예상: 2시간 40분**
|
||||
### 추가 발견 및 해결:
|
||||
- workspace_members.robeing_url 불일치 문제 해결
|
||||
- happybell80 → rb10508_micro로 정상 라우팅
|
||||
|
||||
### 51123 서버 준비 완료
|
||||
- users 테이블에 UUID 정상 저장됨
|
||||
- Gateway UUID 변환 함수 구현 완료
|
||||
- auth-server에서 user.id 접근 가능 확인
|
||||
- **즉시 수정 가능한 상태**
|
||||
## 9. 해결 과정 (2025-08-27 15:45 ~ 16:30)
|
||||
|
||||
### Phase 1: auth-server JWT 수정 (15:45)
|
||||
- Line 209: `"sub": username` → `"sub": str(user.id)`
|
||||
- Line 223: `"user_id": username` → `"user_id": str(user.id)`
|
||||
- ✅ 배포 완료
|
||||
|
||||
### Phase 2: Frontend localStorage 수정 (16:00)
|
||||
- JWT 디코딩 후 UUID와 username 분리 저장
|
||||
- localStorage.setItem('user_id', payload.sub) - UUID
|
||||
- ✅ 자동 배포 완료
|
||||
|
||||
### Phase 3: rb8001 JWT 처리 수정 (16:15)
|
||||
- verify_jwt_token 반환 타입: str → tuple[str, str]
|
||||
- user_id = payload.get("sub") - UUID
|
||||
- username = payload.get("username") - username
|
||||
- ✅ 51124 배포 완료
|
||||
|
||||
### Phase 4: 통합 검증 (16:30)
|
||||
- JWT sub: `1e16e9d5-59f3-54da-a661-8abeabff4230` (UUID) ✅
|
||||
- Gateway 인증: UUID 사용 확인 ✅
|
||||
- Frontend: UUID 전송 확인 ✅
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user