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/네트워크 항목 추가.
This commit is contained in:
@@ -31,3 +31,31 @@ CAFE24_REDIRECT_URI=
|
||||
# 앱 설정
|
||||
# ============================================
|
||||
APP_PORT=8002
|
||||
|
||||
# NPM 리버스 프록시 뒤 서브경로 호스팅
|
||||
APP_ROOT_PATH=/corm
|
||||
|
||||
# ============================================
|
||||
# SSO (dbx-main 세션 공유)
|
||||
# ============================================
|
||||
# dbx-main, OMS 와 반드시 같은 값으로 맞춰야 SSO 동작.
|
||||
# 미설정 시 컨테이너 기동 실패 (fail-fast). openssl rand -hex 32 로 생성.
|
||||
SESSION_SECRET_KEY=__paste-same-value-as-dbx-main__
|
||||
SESSION_COOKIE_NAME=session
|
||||
SESSION_SAME_SITE=lax
|
||||
SESSION_HTTPS_ONLY=1
|
||||
SESSION_MAX_AGE=28800
|
||||
|
||||
# 세션에서 읽을 사용자 키. dbx-main 이 어느 키로 쓰는지에 맞춰라.
|
||||
SESSION_USER_KEY=user_email
|
||||
SESSION_NAME_KEY=user_name
|
||||
|
||||
# 미인증 시 보낼 dbx-main 로그인/로그아웃 URL
|
||||
MAIN_LOGIN_URL=https://dbx.no1king.freeddns.org/login
|
||||
MAIN_LOGOUT_URL=https://dbx.no1king.freeddns.org/logout
|
||||
|
||||
# ============================================
|
||||
# Docker network
|
||||
# ============================================
|
||||
POSTGRES_NETWORK=postgres_default
|
||||
WEB_NETWORK=npm_default
|
||||
|
||||
Reference in New Issue
Block a user