我试图使用HTML POST表单和上载策略执行上传到S3,我正在努力创建签名以符合它。为AWS请求逻辑生成签名 - 获取SignatureDoesNotMatch返回
当我提交上载表单时,我总是收到403和SignatureDoesNotMatch响应。
以此为指导,http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html我已经想出了以下内容:
policy_hash = {
'expiration' => (Time.now.utc + 3600 * 3).iso8601
}
@policy = Base64.encode64(JSON.dump(policy_hash)).gsub("\n","")
kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + @secret_access_key, Time.now.strftime("%Y%m%d"))
kRegion = OpenSSL::HMAC.digest('sha256', kDate, AWS_REGION)
kService = OpenSSL::HMAC.digest('sha256', kRegion, "s3")
kSigning = OpenSSL::HMAC.digest('sha256', kService, "aws4_request")
@signature = Digest::SHA256.hexdigest(
OpenSSL::HMAC.digest('sha256', kSigning, @policy)
)
而且我包括在政策和签名。我知道AWS_REGION
和@secret_access_key
是正确的,因为我在别处使用它们。
任何人都可以看到上面的代码有什么问题吗?或有任何其他指导?
感谢有一看,迈克尔。我决定走一条不同的路线,最终我自己不对代码逻辑进行编码 – user3895395