fineuploader chunk signature v4

时间:2018-02-14 02:45:31

标签: amazon-s3 fine-uploader

尝试在签名v4中上传大文件(块上传)时,我从AWS收到以下错误: SignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。

FineUploader标题: { “报头”:“AWS4-HMAC-SHA256 \ n20180214T003940Z \ n20180214 / EU-西-3 / S3 / aws4_request \ nPOST \ N /文件夹名/ oovoosdk-android-2.3.0.113-1.zip \ nuploads = \ n主机:{ {3}} \ NX-AMZ-ACL:私人\ NX-AMZ-内容SHA256:e3b0c44298fc1c149c897ydu27sas88e56e4649b934ca495991b7852b855 \ NX-AMZ-日期:20180214T003940Z \ NX-AMZ-元文件名:oovoosdk-android-2.3.0.113-1.zip \ NX-AMZ-元qqfilename:oovoosdk-android-2.3.0.113-1.zip \ n \ n主机; X-AMZ-ACL; X-AMZ-内容-SHA256; X-AMZ-日期; X-AMZ-元-filename; X-AMZ-元qqfilename \ ne3b0c44298fc1c149afbf4c8b92427ae41e464hd783a3dc752b855" }

CanonicalRequest

POST /foldername/oovoosdk-android-2.3.0.113-1.zip 上传= 主持人:test.s3.amazonaws.com X-AMZ-ACL:私人 X-AMZ-内容SHA256:e3b0c44298fc1c149c897ydu27sas88e56e4649b934ca495991b7852b855 X-AMZ-日期:20180214T010103Z X-AMZ-元文件名:oovoosdk-android-2.3.0.113-1.zip 的x AMZ-元qqfilename:oovoosdk-android-2.3.0.113-1.zip

主机; X-AMZ-ACL; X-AMZ-内容-SHA256; X-AMZ-日期; X-AMZ-元文件名X-AMZ - 间 - qqfilename e3b0c44298fc1c149afbf4c8b92427ae41e464hd783a3dc752b855

非chunk上传在签名v4中正常工作。

v4签名生成代码

StringtoSign - >精细上传者的标题

public static String getSignature(AWS_Key_Set__c awsKeySet,String StringtoSign) 
{ String HASH_ALGORITHM = 'SHA-256'; 
String MAC_ALGORITHM = 'HmacSHA256'; 
String SIGNATURE_VERSION = 'AWS4'; 
String SIGNATURE_ALGORITHM = 'AWS4-HMAC-SHA256'; 
String serviceName='s3'; 
Datetime dt = Datetime.now();
String region='eu-west-3'; 
String todayDate = dt.formatGmt('yyyyMMdd');
String now = todayDate + 'T' + dt.formatGmt('HHmmss') + 'Z'; 
Blob keyDate = Crypto.generateMac(MAC_ALGORITHM, Blob.valueOf(todayDate), Blob.valueof(SIGNATURE_VERSION + awsKeySet.AWS_Secret_Key__c)); 
Blob keyRegion = Crypto.generateMac(MAC_ALGORITHM, Blob.valueOf(region), keyDate); 
Blob keyService = Crypto.generateMac(MAC_ALGORITHM, Blob.valueOf(serviceName.toLowerCase()), keyRegion); Blob keyCredentials = Crypto.generateMac(MAC_ALGORITHM, Blob.valueOf('aws4_request'), keyService); 
return EncodingUtil.convertToHex(Crypto.generateMac(MAC_ALGORITHM, Blob.valueOf(StringtoSign), keyCredentials)); 
}

0 个答案:

没有答案