fix: [internal] MNG 내부 토큰 교환 테넌트 검증 수정

- InternalTokenService: 테넌트 소속 검사 제거 (HMAC으로 이미 신뢰)
- ApiKeyMiddleware: mng_session 토큰 시 X-TENANT-ID 헤더 우선 적용
- MNG 관리자가 모든 테넌트의 BOM 산출 가능하도록 개선
This commit is contained in:
김보곤
2026-03-18 13:07:54 +09:00
parent 13f84467f0
commit 97c9cff4c7
2 changed files with 13 additions and 10 deletions

View File

@@ -89,6 +89,7 @@ public function handle(Request $request, Closure $next)
// Bearer 인증 (Sanctum)
$user = [];
$accessToken = null;
if ($token = $request->bearerToken()) {
$accessToken = PersonalAccessToken::findToken($token);
if ($accessToken && $accessToken->tokenable instanceof User) {
@@ -114,6 +115,15 @@ public function handle(Request $request, Closure $next)
}
}
// MNG 내부 통신: X-TENANT-ID 헤더로 테넌트 컨텍스트 재설정
// mng_session 토큰(InternalTokenService 발급)인 경우에만 허용
$headerTenantId = $request->header('X-TENANT-ID');
if ($headerTenantId && $accessToken && $accessToken->name === 'mng_session') {
$overrideTenantId = (int) $headerTenantId;
$request->attributes->set('tenant_id', $overrideTenantId);
app()->instance('tenant_id', $overrideTenantId);
}
// 화이트리스트(인증 예외 라우트) - Bearer 토큰 없이 접근 가능
$allowWithoutAuth = [
'api/v1/login',