s3proxy
s3proxy copied to clipboard
PUT Object request with V4Signer gives Forbidden error
Hello Team,
We have configured s3proxy with Amazon s3, when a 'PUT' object request is sent with the V4Signer, it gives
403 SignatureDoesNotMatch
[s3proxy] D 06-15 05:26:43.505 S3Proxy-Jetty-18 o.gaul.s3proxy.S3ProxyHandler:301 |::] request: Request(PUT https://<mydomain.com>/<my_bucket>/f3f6c3e4-3e6c-45d7-bf6d-3ca4a8b4da5e/bb9c175e-6ee0-489b-91b6-a0bc016d213f/65e18173bb62ae7c1abf746a48a8c5d511ef9a143e7af56425c928fcb0858b3f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240615T052639Z&X-Amz-SignedHeaders=host%3Bx-amz-content-sha256&X-Amz-Expires=120&X-Amz-Credential=<access_key>%2F20240615%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=d3cd2cd970a9f8d097afa069c9a12e64013e1e7399b7b6103332b45a7ca4e8d4)@1c5eebea [s3proxy] D 06-15 05:26:43.506 S3Proxy-Jetty-18 o.gaul.s3proxy.S3ProxyHandler:2971 |::] sendSimpleErrorResponse: 403 SignatureDoesNotMatch Forbidden {}
Code:
AwsRequestOverrideConfiguration overrideConfiguration = AwsRequestOverrideConfiguration.builder()
.putHeader(SignerConstant.X_AMZ_CONTENT_SHA256, request.getObjectHash())
.signer(staticPresigner)
.build();
PutObjectRequest putObjectRequest =
PutObjectRequest.builder()
.bucket(bucket)
.key(request.getFullPath(delimiter))
.overrideConfiguration(overrideConfiguration) **---> if this was commented out, it works**
.build();
PutObjectPresignRequest putObjectPresignRequest =
PutObjectPresignRequest.builder()
.signatureDuration(defaultDuration)
.putObjectRequest(putObjectRequest)
.build();
presigner.presignPutObject(putObjectPresignRequest) // -> call this URL fails
Without proxy, directly to the s3 'PUT' request it works, and below is the working request URL
https://