2017-12-06 16 views
0

私は事前に署名したURLを作成し、AWS S3 Presigned URLは

https://s3.amazonaws.com/MyBucket/MyItem/ 
?X-Amz-Security-Token=TOKEN 
&X-Amz-Algorithm=AWS4-HMAC-SHA256 
&X-Amz-Date=20171206T014837Z 
&X-Amz-SignedHeaders=host 
&X-Amz-Expires=3600 
&X-Amz-Credential=CREDENTIAL 
&X-Amz-Signature=SIGNATURE 

Iできるようになりましたcurlこの問題はないように戻って何かを得るパラメータ。ただし、別のクエリパラメータを追加すると、403が返されます。つまり、

https://s3.amazonaws.com/MyBucket/MyItem/ 
?X-Amz-Security-Token=TOKEN 
&X-Amz-Algorithm=AWS4-HMAC-SHA256 
&X-Amz-Date=20171206T014837Z 
&X-Amz-SignedHeaders=host 
&X-Amz-Expires=3600 
&X-Amz-Credential=CREDENTIAL 
&X-Amz-Signature=SIGNATURE 
&Foo=123 

どうしてですか?カスタムクエリをサポートする事前に署名されたURLを生成することは可能ですか?

答えて

1

ヘッダーのいずれかを変更したり、追加/削除した場合は、URLを辞める必要があります。

これはAWS署名デザインの一部であり、このプロセスはより高度なセキュリティを目的としています。バージョン2に署名することからバージョン4に署名するAWSの理由の1つ。

署名デザインは、どのヘッダが重要であり、どれがそうでないかを知らない。それは、すべてのAWSサービスを追跡しようとする悪夢を作り出します。

関連する問題