@@ -268,6 +268,7 @@ where
268268 req. query ,
269269 req. headers ,
270270 req. source_ip ,
271+ req. signing_path ,
271272 )
272273 . await ;
273274
@@ -362,7 +363,7 @@ where
362363 source_ip : Option < IpAddr > ,
363364 ) -> HandlerAction {
364365 let ( action, _metadata) = self
365- . resolve_request_with_metadata ( method, path, query, headers, source_ip)
366+ . resolve_request_with_metadata ( method, path, query, headers, source_ip, None )
366367 . await ;
367368 action
368369 }
@@ -376,6 +377,7 @@ where
376377 query : Option < & str > ,
377378 headers : & HeaderMap ,
378379 source_ip : Option < IpAddr > ,
380+ signing_path : Option < & str > ,
379381 ) -> ( HandlerAction , RequestMetadata ) {
380382 let request_id = Uuid :: new_v4 ( ) . to_string ( ) ;
381383
@@ -397,10 +399,11 @@ where
397399 } ;
398400 tracing:: debug!( operation = ?operation, "parsed S3 operation" ) ;
399401
400- // Resolve identity
402+ // Resolve identity — use the original client-facing path for signature
403+ // verification when a signing_path is provided (e.g. path-mapping rewrites).
401404 let identity = match auth:: resolve_identity (
402405 & method,
403- path,
406+ signing_path . unwrap_or ( path) ,
404407 query. unwrap_or ( "" ) ,
405408 headers,
406409 & self . credential_registry ,
0 commit comments