0002-00000705

问题描述

POST请求表单中提供的签名与OSS计算的签名不匹配。

问题原因

您发起了带有签名信息的POST请求,但是请求表单中提供的签名与OSS计算的签名不匹配。具体表现如下:

  • 对于默认的V1版签名和Amazon S3 V2兼容版本签名,需要通过Signature表单域提供签名信息。

  • 对于V2V4版本签名,需要通过x-oss-signature表单域提供签名信息。

  • 对于Amazon S3 V4兼容版本签名,需要通过x-amz-signature表单域提供签名信息。

问题示例

您发起了默认的V1版本的POST请求,且表单域中包含签名认证相关的表单域,但是请求中signature表单域的值计算错误,导致签名不匹配。

解决方案

在表单域中加入计算签名的流程如下:

  1. 创建一个UTF-8编码的Policy。

  2. Policy进行base64编码,其值即为Policy表单域填入的值,将该值作为将要签名的字符串。

  3. 使用AccessKeySecret对待签名的字符串进行签名。

    Signature = base64(hmac-sha1(AccessKeySecret, base64(policy)))
  4. 在表单域Signature中指定计算出的签名,示例如下。

    Content-Disposition: form-data; name="Signature"
    {signature}
    --9431149156168

关于PostObject请求的更多信息,请参见PostObject

相关文档

您还可以参考以下示例发起带有签名信息的POST请求。