docs: UUID/username 혼용 문제 - 51123 서버 확인 완료, auth-server 즉시 수정 가능
This commit is contained in:
parent
eb0f112a6b
commit
72147aeecc
@ -28,17 +28,22 @@
|
|||||||
|
|
||||||
## 2. 영향 분석
|
## 2. 영향 분석
|
||||||
|
|
||||||
### 2.1 auth-server (51123)
|
### 2.1 auth-server (51123) - 확인 완료
|
||||||
```python
|
```python
|
||||||
# /home/admin/auth-server/app/providers/gmail.py:208-209
|
# /home/admin/auth-server/app/providers/gmail.py
|
||||||
|
# Line 191: user_id_str = str(user.id) # UUID 접근 가능
|
||||||
|
# Line 209: "sub": username # 🔴 UUID 대신 username 사용
|
||||||
jwt_token = create_access_token(data={
|
jwt_token = create_access_token(data={
|
||||||
"sub": username, # 🔴 UUID 대신 username
|
"sub": username, # username 사용 (UUID 사용 가능한데도!)
|
||||||
"email": user_email,
|
"email": user_email,
|
||||||
"name": user_name,
|
"name": user_name,
|
||||||
"username": username,
|
"username": username,
|
||||||
})
|
})
|
||||||
|
# Line 223: Redis에도 "user_id": username 저장
|
||||||
```
|
```
|
||||||
**문제**: JWT 표준에서 `sub`는 unique identifier여야 하는데 username 사용
|
**확인된 문제**:
|
||||||
|
- user.id (UUID) 접근 가능함에도 JWT sub에 username 사용
|
||||||
|
- Redis에도 username을 user_id로 저장
|
||||||
|
|
||||||
### 2.2 robeing-gateway (51123) - 확인 완료
|
### 2.2 robeing-gateway (51123) - 확인 완료
|
||||||
```python
|
```python
|
||||||
@ -111,21 +116,27 @@ slack_user_id: 'happybell80' -- 우회 저장
|
|||||||
|
|
||||||
### 4.1 긴급 조치 (Phase 1)
|
### 4.1 긴급 조치 (Phase 1)
|
||||||
|
|
||||||
#### auth-server 수정
|
#### auth-server 수정 (즉시 가능)
|
||||||
```python
|
```python
|
||||||
# gmail.py:208 수정 필요
|
# gmail.py:209 수정 필요 (Line 191에서 이미 user.id 사용 가능)
|
||||||
jwt_token = create_access_token(data={
|
jwt_token = create_access_token(data={
|
||||||
"sub": str(user.id), # UUID 사용
|
"sub": str(user.id), # Line 191의 user_id_str 사용
|
||||||
"username": username, # username은 별도 필드
|
"username": username, # username은 별도 필드
|
||||||
"email": user_email,
|
"email": user_email,
|
||||||
"name": user_name,
|
"name": user_name,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Line 223 Redis 저장도 수정
|
||||||
|
"user_id": str(user.id), # username 대신 UUID
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Gateway username → UUID 매핑
|
#### Gateway username → UUID 매핑 (확인 완료)
|
||||||
```python
|
```python
|
||||||
# 이미 구현되어 있음 (get_user_by_username)
|
# database.py:170-199 이미 완벽 구현
|
||||||
# 하지만 JWT sub가 UUID면 불필요
|
async def get_user_by_username(username: str):
|
||||||
|
# SELECT id::text as user_id FROM users WHERE username = :username
|
||||||
|
# username으로 UUID 조회 정상 작동
|
||||||
|
# JWT sub가 UUID로 바뀌면 이 변환 불필요해짐
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4.2 중기 개선 (Phase 2)
|
### 4.2 중기 개선 (Phase 2)
|
||||||
@ -154,22 +165,24 @@ username = payload.get("username") # username
|
|||||||
|
|
||||||
## 5. 테스트 시나리오
|
## 5. 테스트 시나리오
|
||||||
|
|
||||||
### 5.1 현재 상태 확인 (검증 완료)
|
### 5.1 현재 상태 확인 (51123 검증 완료)
|
||||||
```bash
|
```bash
|
||||||
# JWT payload 확인
|
# Users 테이블 확인 (51123)
|
||||||
curl -X POST http://localhost:9000/auth/gmail/login
|
|
||||||
# sub: "happybell80" (username)
|
|
||||||
|
|
||||||
# DB 확인
|
|
||||||
SELECT id, username FROM users WHERE username='happybell80';
|
SELECT id, username FROM users WHERE username='happybell80';
|
||||||
# UUID: 1e16e9d5-59f3-54da-a661-8abeabff4230 (UUID4)
|
# id: 1e16e9d5-59f3-54da-a661-8abeabff4230 (정상 UUID4)
|
||||||
|
# username: happybell80
|
||||||
|
|
||||||
# conversation_logs 확인
|
# auth-server 코드 확인
|
||||||
SELECT user_id, slack_user_id FROM conversation_logs;
|
# Line 191: user_id_str = str(user.id) # UUID 문자열 생성
|
||||||
# user_id: NULL (UUID 타입이라 username 저장 실패)
|
# Line 209: "sub": username # 하지만 JWT에 username 사용
|
||||||
# slack_user_id: 'happybell80' (우회 저장)
|
# Line 223: "user_id": username # Redis에도 username
|
||||||
|
|
||||||
# PostgreSQL 로그
|
# Gateway 변환 함수 확인
|
||||||
|
# database.py:184: SELECT id::text as user_id
|
||||||
|
# username → UUID 변환 정상 작동
|
||||||
|
|
||||||
|
# conversation_logs 확인 (51124 보고)
|
||||||
|
# user_id: NULL, slack_user_id: 'happybell80'
|
||||||
# "Non-UUID user_id" 에러 발생
|
# "Non-UUID user_id" 에러 발생
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -209,11 +222,17 @@ SELECT user_id, slack_user_id FROM conversation_logs;
|
|||||||
3. rb8001: UUID와 username 구분 처리
|
3. rb8001: UUID와 username 구분 처리
|
||||||
|
|
||||||
### 예상 작업 시간
|
### 예상 작업 시간
|
||||||
- auth-server 수정: 30분
|
- auth-server 수정: **10분** (Line 209, 223만 수정)
|
||||||
- Frontend 수정: 1시간
|
- Frontend 수정: 1시간
|
||||||
- rb8001 수정: 30분
|
- rb8001 수정: 30분
|
||||||
- 테스트 및 검증: 1시간
|
- 테스트 및 검증: 1시간
|
||||||
- **총 예상: 3시간**
|
- **총 예상: 2시간 40분**
|
||||||
|
|
||||||
|
### 51123 서버 준비 완료
|
||||||
|
- users 테이블에 UUID 정상 저장됨
|
||||||
|
- Gateway UUID 변환 함수 구현 완료
|
||||||
|
- auth-server에서 user.id 접근 가능 확인
|
||||||
|
- **즉시 수정 가능한 상태**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user