2013-10-10 45 views
0

這說明錯誤,「我們出的要求籤名不匹配您提供的簽名。請檢查您的AWS。簽名錯誤

 string url; 
    integer statuscode; 
    String date1=json.serialize(Datetime.now()); 
    if(date1.contains('"')){ 
    date1=date1.replace('"','');} 
    String algorithmName = 'HmacSHA256'; 
    date1=date1.substring(0,(date1.length()-5)); 
    date1=date1+'Z'; 
    date1=EncodingUtil.UrlEncode(date1,'UTF-8');  
    String Action=EncodingUtil.UrlEncode('CreateTopic','UTF-8'); 
    String AccessKey=EncodingUtil.UrlEncode('APIKEY','UTF-8'); // API key hide due to security resion but i check it work fine for SES 
    String Signaturemethod=EncodingUtil.UrlEncode('HmacSHA256','UTF-8'); 
    string str= 'GET\nsns.us-east-1.amazonaws.com\n/\nAction='+Action+'&Name=Testtopics&AWSAccessKeyId='+AccessKey+'&Timestamp='+date1+'&SignatureVersion=2&SignatureMethod='+Signaturemethod; 
    Blob mac = Crypto.generateMac(algorithmName,Blob.valueOf(str),Blob.valueOf('SECURITYKEY')); //blob value of key used in signature 
    url='https://sns.us-east-1.amazonaws.com/?Action=CreateTopic&Name=Testtopics&AWSAccessKeyId=ACCESSKEY&Timestamp='+date1+'&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature='+EncodingUtil.UrlEncode(EncodingUtil.base64Encode(mac),'UTF-8'); // final url 
+0

請提供前一個問題的鏈接。 – Tauseef

+0

這是什麼語言?我當然沒有看到任何HTML。請相應標記。 –

+0

你確定版本在最後一行'&SignatureVersion = 2' – Tauseef

回答

0

我沒有對AWS很多想法,但下面是我能找不到這些東西來解決問題

以下錯誤消息的常見原因是沒有正確創建要簽名的字符串,例如忘記對URL進行URL編碼,例如冒號(:)和Amazon S3存儲桶名稱中的正斜槓(/)。

<Error> 
    <Type>Sender</Type> 
    <Code>SignatureDoesNotMatch</Code> 
    <Message>The request signature we calculated does not match the signature you provided. 
    Check your AWS Secret Access Key and signing method. 
    Consult the service documentation for details.</Message> 
</Error> 

http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html

http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html

+0

謝謝reply.I嘗試了很多,並且還編碼日期和簽名值,但仍然找到相同的錯誤。 – Aisha

0

看起來你可能會丟失在您的網址的結尾尾單引號。看看這是否有所作爲。

url="https://sns.us-east-1.amazonaws.com/?Action=CreateTopic&Name=Testtopics&AWSAccessKeyId=ACCESSKEY&Timestamp='+date1+'&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature='+EncodingUtil.UrlEncode(EncodingUtil.base64Encode(mac),'UTF-8')+"'"; 
+0

我嘗試了在最後加入一個空字符串,但我仍然得到相同的錯誤 – Aisha