Fix documentation inaccuracies for NAVER WORKS OAuth

- Change nginx-deploy to nginx-infra (actual directory name)
- Clarify DB table name: user (SQLAlchemy) not users
- Update Private Key storage: Base64 in .env, not file path
- Clarify callback: GET only (standard OAuth), not POST
- Add RS256 algorithm confirmation for JWT signing
This commit is contained in:
happybell80 2025-09-17 20:38:11 +09:00
parent 7e45e00e9b
commit e61491800a

View File

@ -153,17 +153,20 @@
#### 수정 필요
- **`auth-server/app/main.py`**: naverworks 라우터 등록 (`prefix="/auth/naverworks"`)
- **`auth-server/.env`**: NAVERWORKS_CLIENT_ID, SECRET, REDIRECT_URI 추가
- **`nginx-deploy`**: `/auth/naverworks`, `/api/naverworks` 라우팅 설정
- **`nginx-infra`**: `/auth/naverworks`, `/api/naverworks` 라우팅 설정
#### DB 스키마
- **기존 users 테이블 활용**: oauth_provider="naverworks", oauth_id={NAVER WORKS userId}
- **기존 user 테이블 활용** (SQLAlchemy: `__tablename__ = "user"`):
- oauth_provider="naverworks"
- oauth_id={NAVER WORKS userId}
- **신규 테이블**: `team.naverworks_token` (Service Account 토큰 저장용)
### 5.2 구현 플로우 (Slack 패턴 참조)
#### OAuth 로그인 엔드포인트
- **GET /auth/naverworks/login/**: State 생성 → Redis 저장 → OAuth 리다이렉트
- **GET|POST /auth/naverworks/callback**: State 검증 → Token 교환 → Userinfo 조회 → User 매핑 → JWT 발급
- **GET /auth/naverworks/callback**: State 검증 → Token 교환 → Userinfo 조회 → User 매핑 → JWT 발급
- 주의: 표준 OAuth 2.0은 GET 콜백 사용 (Slack OIDC의 POST form_post와 다름)
#### Redis Keys
- `oauth:state:{state}`: CSRF 방지용 state 저장 (TTL 300s)
@ -180,14 +183,14 @@
#### 결정사항 (확정)
- **Redirect URL 도메인**: `auth.ro-being.com` 사용 (Gmail/Slack과 통일)
- **Private Key 처리**:
- 2025-09-17: Git 임시 commit 후 서버 전송 완료
- 서버 51123: Base64로 .env 파일에 저장됨
- Git에서 삭제 완료 (commit a4a2b9c)
- 2025-09-17: Git 임시 commit 후 서버 전송
- 서버 저장: Base64 인코딩하여 .env의 NAVERWORKS_PRIVATE_KEY_BASE64에 저장
- Git에서 삭제 완료 (보안상 Git 저장 금지)
- **NAVER WORKS 토큰 테이블**: `naverworks_token` (team 스키마 아래, 단수형)
#### 확인필요
- **OIDC userinfo 응답 형식**: sub, userId 등 정확한 필드명
- **Service Account JWT 서명**: 알고리즘 (RS256 등)
- **Service Account JWT 서명**: RS256 알고리즘 (RSA 2048 bits) 사용 확인됨
- **Rate Limit**: API 호출 제한 및 쿼터
- **Private Key 교체 시**: 기존 토큰 유효성 유지 여부