Commit Graph

6 Commits

Author SHA1 Message Date
king c4973224aa feat(auth): X-Service-Token 헤더로 서비스 간 호출 우회 허용
OMS 의 반품 신청 같은 서버-서버 호출은 사용자 세션이 없으므로 AuthGuard 가
401 로 막아왔다. INTERNAL_SERVICE_TOKEN env 가 설정돼 있고 요청 헤더
X-Service-Token 이 같은 값이면 세션 검사를 우회한다.

보안: NPM 의 /corm/ location 블록에서 외부에서 들어온 X-Service-Token 헤더를
proxy_set_header X-Service-Token ""; 로 strip 해야 외부에서 토큰 추측 공격 방지.
2026-05-24 18:15:00 +09:00
king 6288716992 fix(sso): AuthGuard 경로 정규화 — scope.path 가 root_path 포함 여부와 무관하게 동작
uvicorn --root-path 설정 시 ASGI scope.path 가 환경/버전에 따라 prepend 되는
경우가 있어 매칭이 어긋났다. raw path 가 APP_ROOT_PATH 로 시작하면 잘라내고,
아니면 그대로 사용하도록 정규화.

증상: GET /health/db → 302 (exempt 미작동), next=/corm/corm/ (이중 prefix).
2026-05-24 17:58:57 +09:00
king a8ea265e61 fix(sso): AuthGuard 가 ASGI scope.path 를 사용하도록 변경
request.url.path 는 uvicorn --root-path 가 prepend 된 형태(/corm/health/db)라
_AUTH_EXEMPT_PREFIXES 의 /health prefix 와 매칭 안 됐다. scope.path 는
root_path 가 제외된 형태(/health/db)라 정확히 매칭된다.

next_path 계산도 같이 정리 (이중 prefix 방지).
2026-05-24 17:56:09 +09:00
king 2795b93d43 fix(sso): 미들웨어 등록 순서 수정 — AuthGuard 가 session 을 읽을 수 있도록
Starlette 의 add_middleware 는 마지막에 추가한 것이 가장 바깥(먼저 실행).
AuthGuardMiddleware 가 request.session 을 보려면 SessionMiddleware 가
먼저 scope 에 session 을 주입해야 한다. 따라서:
  app.add_middleware(AuthGuardMiddleware)    # 안쪽
  app.add_middleware(SessionMiddleware, ...) # 바깥쪽 (먼저 실행)
2026-05-24 17:53:48 +09:00
king 31fa8d573b feat(sso): dbx-main SSO 통합, /corm/ 서브경로 호스팅, 인증 미들웨어 적용
- SessionMiddleware 추가 (dbx-main/OMS 와 동일 SECRET_KEY/COOKIE_NAME/MAX_AGE).
  미설정 시 fail-fast.
- AuthGuardMiddleware: 미인증 시 HTML 요청은 dbx-main /login?next=... 으로 302,
  API 요청은 401 JSON. 예외 경로: /static/, /health, OAuth 콜백, /login, /logout.
- /health/db 엔드포인트 추가 (DB ping) — dbx-main 헬스 배지가 폴링.
- /login, /logout 라우트 추가 (자체 OAuth 없음, dbx-main 으로 302 위임).
- APP_ROOT_PATH 환경변수 도입 — Dockerfile 의 uvicorn --root-path 로 전달.
- templates/index.html: 모든 /static/, /js 절대경로를 {{ root_path }} 기반으로,
  window.APP_BASE_PATH 변수 주입.
- static/js/app.js: fetch wrapper 1개로 /api/* 호출에 APP_BASE_PATH prepend,
  401 응답 시 dbx-main 로그인으로 자동 이동. 32 곳 호출 사이트는 그대로 둠.
- Cafe24 OAuth 콜백의 hard-coded redirect 도 root_path 인지하도록 수정.
- docker-compose.yml: 호스트 포트 바인딩 제거(0.0.0.0:8002 노출 차단),
  expose 추가, web_net(npm_default) 외부 네트워크 attach, healthcheck 추가.
- .env.example 에 SSO/네트워크 항목 추가.
2026-05-24 15:44:28 +09:00
king 6e438344d0 init: dbx-corm 프로젝트 Docker 기반 마이그레이션
주요 변경사항:
- DB 접속정보를 환경변수(.env) 방식으로 분리
- orderlist_app → orderlist_db 변경 (main.py, routers/returns.py)
- 네이버/카페24 API 키도 환경변수로 분리
- Dockerfile / docker-compose.yml 작성 (외부 PostgreSQL 네트워크 연결)
- .gitignore: 민감파일(.env, cafe24_tokens.json, manual-ordering.json) 제외
- 불필요 파일 정리 (venv, __pycache__, 일회성 스크립트, xlsx 등)
- README.md / .env.example / push_to_gitea.bat 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 15:11:34 +09:00