POST请求签名(V4版本) conditions匹配方式表 匹配方式 说明 eq 精确匹配。比如 ["eq", "$key", "ExampleObject"],则表单域中指定key的值必须为ExampleObject:{"key": "ExampleObject"}。 startswith 前缀匹配。比如 ["startswith", "$key", "aaa/bbb"],则表单域中指定key的值必须以aaa/bbb开始:{"key": "aaa/bbb/ccc"}。 示例 { "expiration": "20241216T13:00:00.000Z", "conditions": [ {"bucket": "testbucket"}, {"xamzalgorithm": "AWS4HMACSHA256"}, {"xamzcredential": "afwnu54/20241216/useast1/s3/aws4request"}, {"xamzdate": "20241216T020211Z"}, ["contentlengthrange", 1, 10], ["eq", "$successactionstatus", "201"], ["startswith", "$key", "aaa/bbb/"], ["eq", "$contenttype", "image/jpg"] ] } Signature形式 Hex(HmacSHA256(kSigning,Base64(PolicyJSON))) 签名密钥kSigning的生成规则 kDateHmacSHA256("AWS4"+{SecretAccessKey}, {dateStamp}) kRegionHmacSHA256(kDate, {region}) kServiceHmacSHA256(kRegion, {service}) kSigningHmacSHA256(kService, "aws4request") 签名步骤 第一步:创建utf8编码的policy 第二步:构造签名字符串,在POST V4签名中,StringToSign是policy的Base64编码字符串 第三步:计算签名密钥,根据SecretAccessKey、dateStamp、region、service的值按照上述签名密钥的计算规则生成签名密钥kSigning 第四步:计算签名Signature,生成最终的签名时需要使用kSigning对StringToSign进行签名,该签名的计算方式为 Hex(HmacSHA256(kSigning,StringToSign)),所得到的十六进制字符串即为Signature