feat(sso): SESSION_SECRET_KEY 미설정 시 fail-fast
- SESSION_SECRET_KEY 가 .env 에 없으면 컨테이너 기동 단계에서 RuntimeError. 알려진 기본값(super-secret-key) 폴백 제거로 양쪽 secret 불일치 사고 방지. - .env.example 의 SESSION_SECRET_KEY 안내 강화 (openssl 명령, dbx-main 동기화 언급).
This commit is contained in:
+3
-1
@@ -18,7 +18,9 @@ APP_ROOT_PATH=/orderlist
|
|||||||
|
|
||||||
# ===== SSO (dbx-main 세션 공유) =====
|
# ===== SSO (dbx-main 세션 공유) =====
|
||||||
# dbx-main 과 OMS 가 반드시 같은 값으로 맞춰야 SSO가 동작한다.
|
# dbx-main 과 OMS 가 반드시 같은 값으로 맞춰야 SSO가 동작한다.
|
||||||
# - SESSION_SECRET_KEY : 두 앱이 동일해야 세션 쿠키를 서로 복호화 가능
|
# - SESSION_SECRET_KEY : 두 앱이 동일해야 세션 쿠키를 서로 복호화 가능.
|
||||||
|
# 미설정 시 컨테이너 기동 실패(fail-fast).
|
||||||
|
# openssl rand -hex 32 로 생성한 같은 값을 dbx-main .env 에도 박을 것.
|
||||||
# - SESSION_COOKIE_NAME : 두 앱이 동일해야 같은 쿠키를 본다 (기본 'session')
|
# - SESSION_COOKIE_NAME : 두 앱이 동일해야 같은 쿠키를 본다 (기본 'session')
|
||||||
SESSION_SECRET_KEY=__paste-same-value-as-dbx-main__
|
SESSION_SECRET_KEY=__paste-same-value-as-dbx-main__
|
||||||
SESSION_COOKIE_NAME=session
|
SESSION_COOKIE_NAME=session
|
||||||
|
|||||||
+8
-1
@@ -35,9 +35,16 @@ async def health_db():
|
|||||||
# dbx-main 과 SSO 하려면 SESSION_SECRET_KEY 와 SESSION_COOKIE_NAME 을
|
# dbx-main 과 SSO 하려면 SESSION_SECRET_KEY 와 SESSION_COOKIE_NAME 을
|
||||||
# 두 앱이 동일하게 맞춰야 한다. 그래야 dbx-main 이 발급한 세션 쿠키를
|
# 두 앱이 동일하게 맞춰야 한다. 그래야 dbx-main 이 발급한 세션 쿠키를
|
||||||
# OMS 가 그대로 읽을 수 있다.
|
# OMS 가 그대로 읽을 수 있다.
|
||||||
|
_session_secret = os.getenv("SESSION_SECRET_KEY", "").strip()
|
||||||
|
if not _session_secret:
|
||||||
|
raise RuntimeError(
|
||||||
|
"SESSION_SECRET_KEY 환경변수가 설정되지 않았습니다. "
|
||||||
|
"openssl rand -hex 32 로 새 값을 만들어 .env 에 넣고 컨테이너를 재기동하세요. "
|
||||||
|
"dbx-main 과 SSO 하려면 양쪽 .env 에 같은 값이어야 합니다."
|
||||||
|
)
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
SessionMiddleware,
|
SessionMiddleware,
|
||||||
secret_key=os.getenv("SESSION_SECRET_KEY", "super-secret-key"),
|
secret_key=_session_secret,
|
||||||
session_cookie=os.getenv("SESSION_COOKIE_NAME", "session"),
|
session_cookie=os.getenv("SESSION_COOKIE_NAME", "session"),
|
||||||
same_site=os.getenv("SESSION_SAME_SITE", "lax"),
|
same_site=os.getenv("SESSION_SAME_SITE", "lax"),
|
||||||
https_only=os.getenv("SESSION_HTTPS_ONLY", "0") == "1",
|
https_only=os.getenv("SESSION_HTTPS_ONLY", "0") == "1",
|
||||||
|
|||||||
Reference in New Issue
Block a user