fix: [internal] MNG 내부 토큰 교환 테넌트 검증 수정
- InternalTokenService: 테넌트 소속 검사 제거 (HMAC으로 이미 신뢰) - ApiKeyMiddleware: mng_session 토큰 시 X-TENANT-ID 헤더 우선 적용 - MNG 관리자가 모든 테넌트의 BOM 산출 가능하도록 개선
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user