0

署名に使用する文字列は次のとおりです

GET
sqs.us-east-1.amazonaws.com
/XXXXXXXXXXX/Localhost
AWSAccessKeyId=XXXXXNGOTNJCTGAXXXXX&Action=ReceiveMessage&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-12-26T07%3A56%3A37Z&Version=2012-11-05

最初の 3 行の後に「\n」文字がありますが、最後の行の後ではありません。最後に「\n」も試しましたが、結果は同じでした

私は彼らが計算しています

HMAC_SHA256(AWSKey,string) 

HMAC_SHA256 の正確性を個別に検証しました。最後に、HMAC Base 64 でエンコードされた URL を呼び出しています。

https://sqs.us-east-1.amazonaws.com/XXXXXXXXXXX/Localhost?AWSAccessKeyId=XXXXXNGOTNJCTGAXXXXX&Action=ReceiveMessage&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-12-26T07%3A56%3A38Z&Version=2012-11-05&Signature=06nzru1EroDLJTJDjExLbyUyQzEcct3wAp%2Bm7TOBTjb0aPWSJTIXXXXX

XX..XX は私が追加したものです。

ドキュメントを何度か確認した後、同じエラーが見つかりませんが、署名が一致しないというエラーが表示されます。

<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>
4

1 に答える 1

0

問題は、URL のクエリ文字列の先頭にあるキュー名と疑問符の間のスラッシュでしょうか? そこにあるべきではないと思います。

...Localhost/?AWSAccessKeyId...
            ^ remove this

うーん、そうでしたね。さて、ここに別の考えがあります:

HMAC_SHA256 の正確性を確認したとのことですが、これが引数の正しい順序であると確信していますか? 一部の実装では、次の規則が使用されます。

HMAC_SHA256($data,$key)

あなたは反対のことをしています。

于 2012-12-27T04:34:15.630 に答える