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 해야 외부에서 토큰 추측 공격 방지.
This commit is contained in:
2026-05-24 18:15:00 +09:00
parent 6288716992
commit c4973224aa
2 changed files with 15 additions and 0 deletions
+8
View File
@@ -85,6 +85,14 @@ class AuthGuardMiddleware(BaseHTTPMiddleware):
if path == prefix or path.startswith(prefix):
return await call_next(request)
# 서비스 간 호출 — X-Service-Token 헤더가 일치하면 세션 없이도 통과.
# NPM 은 외부에서 들어온 이 헤더를 빈 값으로 strip 해야 한다 (보안).
service_token = os.getenv("INTERNAL_SERVICE_TOKEN", "")
if service_token:
incoming_token = request.headers.get("x-service-token", "")
if incoming_token and incoming_token == service_token:
return await call_next(request)
email = request.session.get(SESSION_USER_KEY)
if email:
return await call_next(request)