2013-10-10 6 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-кодирование символов, таких как двоеточие (:) и косой чертой (/) в названиях ковша 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

Спасибо за ответ. Я много пробовал, а также кодировал дату и значение подписи, но все равно обнаружил ту же ошибку. – Aisha

0

Похоже, что вы, возможно, отсутствует завершающую одинарную кавычку в конце вашего URL. Посмотрите, если это имеет значение.

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