diff --git a/src/utils/s3/auth.ts b/src/utils/s3/auth.ts index 8abf547..95f659e 100644 --- a/src/utils/s3/auth.ts +++ b/src/utils/s3/auth.ts @@ -1,5 +1,4 @@ import { timingSafeEqual } from 'node:crypto'; -import logger from '../../shared/logger/index'; /** * Timing-safe string comparison that prevents timing attacks. @@ -167,9 +166,9 @@ const normalizeUri = (uri: string): string => { result.push(segment); } - // Reconstruct path + // Reconstruct path (no trailing slash except root) const normalized = result.length > 0 ? `/${result.join('/')}` : '/'; - return normalized; + return normalized === '/' ? '/' : normalized.replace(/\/+$/, ''); }; const awsEncode = (value: string): string => @@ -300,15 +299,6 @@ export const verifySignature = async ( const hashedCanonicalRequest = await sha256Hex(canonicalRequest); - // Debug canonical request for non-root GETs (bucket operations) - logger.info('SigV4 canonical request', { - method, - path: parsedUrl.pathname, - signedHeaders: parsed.signedHeaders, - hashedPayload: hashedPayload.slice(0, 20) + '...', - canReq: canonicalRequest.slice(0, 500), - }); - // M1: Fall back to Date header if x-amz-date is missing const amzDate = headers['x-amz-date'] || headers['date'] || '';