docs: NAVER WORKS 토큰 갱신 현황 업데이트 - 확인된 사실만 기록, 추측 제거
This commit is contained in:
parent
ba71712648
commit
d30b415f3b
@ -165,21 +165,21 @@ POST /v2/mail-summary
|
||||
- **수명**: Access Token 1시간, Refresh Token 90일
|
||||
- **위험**: DB 저장 실패 시 영구 토큰 손실, 재인증 필요
|
||||
|
||||
### 8.2 구현 위치 결정
|
||||
**auth-server에서 중앙 관리 (정답)**
|
||||
```
|
||||
/home/admin/auth-server/app/providers/
|
||||
└── naverworks_refresh.py # 토큰 갱신 전용 모듈
|
||||
```
|
||||
### 8.2 구현 위치 (결정 완료)
|
||||
**auth-server에서 중앙 관리**
|
||||
- 위치: `/home/admin/auth-server/app/providers/naverworks_refresh.py` (생성 필요)
|
||||
- 포트: 9000
|
||||
- 엔드포인트: **결정 필요** - `/auth/naverworks/refresh` 또는 `/api/auth/naverworks/refresh`
|
||||
|
||||
**역할 분리**:
|
||||
- auth-server: 모든 토큰 발급/갱신/저장 (포트 9000)
|
||||
- rb8001/skill-email: API 호출만, 401 시 auth-server에 갱신 요청
|
||||
- 엔드포인트: `POST /auth/naverworks/refresh`
|
||||
### 8.3 현재 인프라 상태 (확인 완료)
|
||||
- Redis 컨테이너: 실행 중 (6f083213a8b1)
|
||||
- auth-server 컨테이너: 실행 중 (dba7eb03216a)
|
||||
- 현재 토큰 상태: Access Token 만료 (4시간 경과), Refresh Token 보유
|
||||
- DB 필드: token_data (JSONB), expires_at, expiry 존재 (**확인 필요**: 어느 필드 사용?)
|
||||
|
||||
### 8.3 동시성 제어
|
||||
- Redis Lock 또는 DB 트랜잭션으로 동시 갱신 방지
|
||||
- 첫 번째 갱신만 성공, 나머지는 대기 또는 실패 처리
|
||||
### 8.4 동시성 제어
|
||||
- **확인 필요**: Redis Lock 구현 여부
|
||||
- **결정 필요**: DB 트랜잭션 vs Redis Lock
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -45,38 +45,46 @@ app.include_router(naverworks_passport.router, prefix="/auth/naverworks/passport
|
||||
- 로그인 시 `is_equipped=false`로 설정 (Passport 설치 시 `true`)
|
||||
- 토큰 저장 실패해도 로그인은 계속 진행
|
||||
|
||||
### 3. DB 스키마
|
||||
### 3. DB 스키마 (실제 확인)
|
||||
**테이블명**: `naverworks_token`
|
||||
|
||||
| 컬럼명 | 타입 | 설명 |
|
||||
|--------|------|------|
|
||||
| user_id | UUID (PK) | user 테이블 FK |
|
||||
| id | UUID (PK) | gen_random_uuid() |
|
||||
| user_id | UUID | user 테이블 FK |
|
||||
| username | VARCHAR(255) | 빠른 조회용 |
|
||||
| domain_id | VARCHAR(255) | NAVER WORKS 도메인 ID |
|
||||
| account_id | VARCHAR(255) | NAVER WORKS 계정 ID |
|
||||
| token_data | JSONB | access_token, refresh_token, token_type |
|
||||
| access_token | TEXT | **확인 필요**: 사용 여부 |
|
||||
| refresh_token | TEXT | **확인 필요**: 사용 여부 |
|
||||
| token_type | VARCHAR(50) | 기본값: 'Bearer' |
|
||||
| token_data | JSONB | access_token, refresh_token 저장 |
|
||||
| oauth_config | JSONB | client_id, client_secret |
|
||||
| scopes | JSONB | 권한 목록 |
|
||||
| metadata | JSONB | email, name, org_name 등 |
|
||||
| expiry | TIMESTAMP | access_token 만료 시간 |
|
||||
| is_equipped | BOOLEAN | 활성화 상태 |
|
||||
| created_at | TIMESTAMP | 생성 시각 |
|
||||
| updated_at | TIMESTAMP | 수정 시각 |
|
||||
| expires_at | TIMESTAMP | **확인 필요**: expiry와 중복? |
|
||||
| expiry | TIMESTAMP | **확인 필요**: expires_at와 중복? |
|
||||
| service_account | VARCHAR(255) | Service Account ID |
|
||||
| is_equipped | BOOLEAN | 기본값: false |
|
||||
| created_at | TIMESTAMPTZ | 생성 시각 |
|
||||
| updated_at | TIMESTAMPTZ | 수정 시각 |
|
||||
|
||||
**인덱스**:
|
||||
- PRIMARY KEY: id
|
||||
- idx_naverworks_token_user_id
|
||||
- idx_naverworks_token_expires_at
|
||||
|
||||
### 4. 환경변수 설정
|
||||
|
||||
#### 필수 환경변수 (.env 파일)
|
||||
```bash
|
||||
# NAVER WORKS OAuth 설정 (이미 존재)
|
||||
NAVER_WORKS_CLIENT_ID=<Developer Console에서 확인>
|
||||
NAVER_WORKS_CLIENT_SECRET=<Developer Console에서 확인>
|
||||
NAVER_WORKS_TENANT_ID=<조직 도메인 ID>
|
||||
NAVER_WORKS_SERVICE_ACCOUNT=<Service Account ID>
|
||||
NAVER_WORKS_PRIVATE_KEY_BASE64=<Base64 인코딩된 Private Key>
|
||||
|
||||
# Passport Redirect URL (추가됨)
|
||||
NAVER_WORKS_PASSPORT_REDIRECT_URI=https://auth.ro-being.com/auth/naverworks/passport/callback
|
||||
```
|
||||
#### 환경변수 (확인 완료)
|
||||
- NAVER_WORKS_CLIENT_ID
|
||||
- NAVER_WORKS_CLIENT_SECRET
|
||||
- NAVER_WORKS_REDIRECT_URI
|
||||
- NAVER_WORKS_SERVICE_ACCOUNT
|
||||
- NAVER_WORKS_TENANT_ID
|
||||
- NAVER_WORKS_PRIVATE_KEY_BASE64
|
||||
- NAVER_WORKS_SCOPES
|
||||
- NAVER_WORKS_PASSPORT_REDIRECT_URI
|
||||
|
||||
## ⚠️ 확인 필요 사항
|
||||
|
||||
|
||||
@ -54,6 +54,11 @@
|
||||
- `/auth/naverworks/passport/callback` - Passport 콜백
|
||||
- `/auth/naverworks/passport/status` - Passport 상태 확인
|
||||
|
||||
**Phase 3 - 토큰 갱신 엔드포인트** (구현 필요):
|
||||
- **결정 필요**: `/auth/naverworks/refresh` 또는 `/api/auth/naverworks/refresh`
|
||||
- 파일 생성 필요: `naverworks_refresh.py`
|
||||
- Refresh Token Rotation 처리 필요
|
||||
|
||||
**외부 OAuth URL**:
|
||||
- **Authorization**: `https://auth.worksmobile.com/oauth2/v2.0/authorize`
|
||||
- **Token**: `https://auth.worksmobile.com/oauth2/v2.0/token`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user