【问题标题】:CEPH + S3 Java SDK + presigned PUT + CORS = FAILCEPH + S3 Java SDK + 预签名 PUT + CORS = 失败
【发布时间】:2014-08-22 12:57:42
【问题描述】:

我正在寻找让 CEPH + S3 Java SDK + 预签名的 PUT url + CORS 工作的神奇公式。我们能够创建一个存储桶,然后将 CORS 配置应用于该存储桶。然后,我们能够创建一个预先生成的 PUT url,然后我们将其发送回客户端。但是,CORS 预检(选项)请求失败并显示 403。

对于 AWS,同样的代码效果很好。但是,Swift 和 Ceph 都在 OPTIONS 请求上失败,并返回 403。由于 OPTIONS 失败,CORS 失败。我们追踪到(我们认为)RADOSGW 中可能存在的缺陷,即它如何创建 auth 标头……它与亚马逊 SDK 使用的签名过程不匹配。例如:

AWS Java auth hdr that gets signed:
PUT

image/jpeg
1404252781
x-amz-meta-origfile:Desert.jpg
/virbsupport/78946140-4638-4338-b765-6f701c453a89?response-content-disposition=attachment; filename=Desert.jpg

In Ceph:
OPTIONS


1404252781
/virbsupport/78946140-4638-4338-b765-6f701c453a89?response-content-disposition=attachment; filename=Desert.jpg

我们可以处理缺少的内容类型和其他元数据字段,但请注意方法完全错误。 RADOSGW 我认为应该使用“Access-Control-Request-Method”作为签名中的方法......而不是用于预检请求的实际 OPTIONS 方法。

有没有人能够让这种组合发挥作用?

【问题讨论】:

    标签: amazon-s3 cors openstack-swift ceph radosgw


    【解决方案1】:

    我们最终为这个问题向 Ceph RGW 库记录了一个错误。 http://tracker.ceph.com/issues/8718#change-38624

    【讨论】:

      猜你喜欢
      • 2012-09-19
      • 2022-12-18
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 2012-04-23
      • 1970-01-01
      相关资源
      最近更新 更多