1

S3 アカウントへの一時的なアクセスを取得するために、Amazon sts トークン リクエストに署名しようとしています。署名バージョン 4 の指示に従っていますが、うまくいきません。

このメッセージは、Amazon sts から常に返されます。

<Code>IncompleteSignature</Code>

<Message>Request must contain a signature that conforms to AWS standards</Message>

これが私が送信しているURLリクエストです。

https://sts.amazonaws.com/?AWSAccessKeyId=**********&Action=GetFederationToken&DurationSeconds=3600&SignatureMethod=HmacSHA256&SignatureVersion=4&Timestamp=2013-04-23T19:01:00Z&Version=2011-06-15&Signature=2fc3dc902a20a5aa25c3191f2aa6513088e11596082b6a563b00dc5ea4b8bfa0

署名バージョン 4 の手順に従って、これが署名の計算方法です。

http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

タスク1:

GET\n
/\n
AWSAccessKeyId=<Access Key Removed>&
Action=GetFederationToken&
DurationSeconds=3600&
SignatureMethod=HmacSHA256&
SignatureVersion=4&
Timestamp=2013-04-23T19:01:00Z&
Version=2011-06-15\n
host:sts.amazonaws.com\n
host\n
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

タスク 2:

AWS4-HMAC-SHA256\n
20130423T190100Z\n
20130423/us-gov-west-1/sts/aws4_request\n
5e769aeb49a050fd7cd1035122712098fd83220ea42a0d9871f0ff2fa622b1c6

タスク 3:

Signature: 2fc3dc902a20a5aa25c3191f2aa6513088e11596082b6a563b00dc5ea4b8bfa0

これまで運がなかったので、これに取り組んできました。前もって感謝します :)

4

2 に答える 2

2

ここにメモしておくだけで、リクエストを変更することで、ようやくトークンを取得できました。これが同じ問題を抱えている他の人を助ける場合に備えて。ドキュメントにはあまり助けがありませんでしたが、リクエストを継続的に変更することで、最終的にサーバーから役立つエラー メッセージを取得することができました。最も重要なメッセージは、リクエストの署名と署名する文字列がどうあるべきかを正確に示す最後のメッセージでした。

これは特に、Amazon Secure Token Service からフェデレーション トークンを取得する場合に当てはまります。

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.

The Canonical String for this request should have been
'GET
/
Action=GetFederationToken&Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAXXXXXXXXXWIQ%2F20130424%2Fus-east-1%2Fsts%2Faws4_request&X-Amz-Date=20130424T183200Z&X-Amz-SignedHeaders=host%3Bx-amz-date
host:sts.amazonaws.com
x-amz-date:

host;x-amz-date
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'

The String-to-Sign should have been
'AWS4-HMAC-SHA256
20130424T183200Z
20130424/us-east-1/sts/aws4_request
3eb22aba7f25dd4e01be888added6f74db579bdf0d066d2b1f75779a25b1300d'

で、使ったURLはこちら。

https://sts.amazonaws.com/?Action=GetFederationToken&Name=Megan&Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIXXXXXXXXXXWIQ%2F20130424%2Fus-east-1%2Fsts%2Faws4_request&X-Amz-Date=20130424T183200Z&X-Amz-SignedHeaders=host%3Bx-amz-date&X-Amz-Signature=db754013466768c11a86a610796faad6a041bcad9d83f4c958cac82988d2f7d7

于 2013-04-24T18:52:50.757 に答える
1

Amazon S3 は現在、署名バージョン 4 をサポートしていません。現在サポートされている署名アルゴリズムについては、S3 のドキュメントを参照してください。

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

編集: 最初のリクエストを読み違えて申し訳ありません。署名の計算で問題を引き起こしている STS 要求に関する誤った仮定がいくつかあります。

  1. 操作はPOSTです
  2. STS でサポートされているリージョンは us-east-1 のみです。
  3. 署名するには、ヘッダーに日付を含める必要があります

SDK を使用したくない場合もあると思いますが、署名を生成する方法の例を示します。

以下は、iOS SDK から取得した例です。

正規のリクエスト:

POST\n
/\n
\n
host:sts.amazonaws.com\n
x-amz-date:20130424T164023Z\n
\n
host;x-amz-date\n
HASH_REMOVED\n

署名する文字列:

AWS4-HMAC-SHA256\n
20130424T164023Z\n
20130424/us-east-1/sts/aws4_request\n
HASH_REMOVED
于 2013-04-24T13:22:37.463 に答える