意外的 v4 签名 url 使用 com.amazonaws:aws-java-sdk 1.11.18
Unexpected v4 signed url using com.amazonaws:aws-java-sdk 1.11.18
我们正在使用 (com.amazonaws:aws-java-sdk 版本 1.11.18)-
创建亚马逊 S3 签名 urls
AmazonS3 s3 = new AmazonS3Client(credentials);
s3.generatePresignedUrl(bucketName, objectName, expiration, method);
我们希望得到一个签名 url,其中包含一个名为“签名”(v2 签名)的查询参数。
我们注意到,在我们的服务器中,一些请求会导致 v4 签名 - 我们意外地得到一个“x-amz-signature”查询参数作为签名的一部分 url。
一旦开始 - 它可以在服务器上为相同请求的 s3 对象重现。
但是,对其他对象进行签名的请求仍将使用 v2 进行签名。
在损坏的服务器上重新启动 tomcat 服务“修复”了这个问题。
知道什么会导致库开始使用 v4 对某些对象进行签名吗?
该问题已在当前版本的 sdk (1.11.244) 中重现。
最终我们开始手动设置配置 -
s3 = new AmazonS3Client(credentials,
new ClientConfiguration().withSignerOverride("NoOpSignerType"));
我们怀疑此行为是由于 createSigner
方法的内部实现引起的,如果映射中包含存储桶,则使用 V4 对请求进行签名。 -
private static final Map<String, String> bucketRegionCache
我们正在使用 (com.amazonaws:aws-java-sdk 版本 1.11.18)-
创建亚马逊 S3 签名 urlsAmazonS3 s3 = new AmazonS3Client(credentials);
s3.generatePresignedUrl(bucketName, objectName, expiration, method);
我们希望得到一个签名 url,其中包含一个名为“签名”(v2 签名)的查询参数。
我们注意到,在我们的服务器中,一些请求会导致 v4 签名 - 我们意外地得到一个“x-amz-signature”查询参数作为签名的一部分 url。
一旦开始 - 它可以在服务器上为相同请求的 s3 对象重现。 但是,对其他对象进行签名的请求仍将使用 v2 进行签名。 在损坏的服务器上重新启动 tomcat 服务“修复”了这个问题。
知道什么会导致库开始使用 v4 对某些对象进行签名吗?
该问题已在当前版本的 sdk (1.11.244) 中重现。 最终我们开始手动设置配置 -
s3 = new AmazonS3Client(credentials,
new ClientConfiguration().withSignerOverride("NoOpSignerType"));
我们怀疑此行为是由于 createSigner
方法的内部实现引起的,如果映射中包含存储桶,则使用 V4 对请求进行签名。 -
private static final Map<String, String> bucketRegionCache