本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
身分驗證方法
重要
除非您使用 AWS SDKs或 CLI,否則您必須撰寫程式碼來計算在請求中提供身分驗證資訊的簽章。Signature 第 4 版中的 AWS 簽章計算可能是一項複雜的任務,我們建議您盡可能使用 AWS SDKs或 CLI。
您可以使用下列其中一種方法來表示身分驗證資訊。
HTTP 授權標頭
HTTP Authorization
標頭是驗證請求的最常見方法。所有 REST API 操作 (使用 POST
請求的以瀏覽器為基礎的上傳除外) 需要此標頭。
下列範例顯示 SigV4 和 SigV4a 的Authorization
標頭值。為了便於閱讀,向此範例新增了分行符號。在程式碼中,標頭必須是一個連續字串。演算法與憑證之間沒有逗號,但其他元素必須以逗號分隔。
範例 SigV4
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
範例 SigV4a
Authorization: AWS4-ECDSA-P256-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/s3/aws4_request, SignedHeaders=host;range;x-amz-date;x-amz-region-set, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
下表描述上述範例中授權標頭值的各種元件:
元件 | 描述 |
---|---|
授權 |
用於計算簽章的演算法。
|
Credential |
您的存取金鑰 ID 和範圍資訊。
使用 YYYYMMDD 格式指定 <date> 值。傳送請求至 Amazon S3 時,<aws-service> 值為 S3。 Amazon S3 |
SignedHeaders |
以分號分隔的請求標頭清單,用於計算 Signature。此清單僅包含標頭名稱,且標頭名稱必須為小寫。例如: 對於 SigV4a,您必須包含區域集標頭,指定請求將在其中生效的區域集。標頭 X-Amz-Region-Set 指定為逗號分隔值的清單。 |
簽章 |
256 位元簽章以 64 個小寫十六進位字元表示。例如: 請注意,簽章計算因您選擇傳輸承載的選項而異。 |
查詢字串參數
您可以使用查詢字串以完全在 URL 中表達請求。在此情況下,您可以使用查詢參數來提供請求資訊,包括驗證資訊。由於請求簽章是 URL 的一部分,因此此類型 URL 通常稱為預先簽章的 URL。您可以使用預先簽章的 URL 在 HTML 中嵌入可點選連結,有效期最長可達七天。如需詳細資訊,請參閱《Amazon S3 API 參考》中的驗證請求:使用查詢參數AWS (簽章第 4 版)。
下列範例顯示 SigV4 和 SigV4a 的URLs。為了便於閱讀,向此範例新增了分行符號:
範例 SigV4
https://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/<region>/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &X-Amz-Signature=<signature-value>
範例 SigV4a
http://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256 & X-Amz-Credential=<your-access-key-id>/20240721/s3/aws4_request & X-amz-Region-Set=<regionset> & X-Amz-Date=20240721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host;x-amz-region-set & X-Amz-Signature=<signature-value>
注意
URL 中的 X-Amz-Credential
值僅為了便於閱讀而顯示 "/" 字元。實際上,應將其編碼為 %2F。例如:
&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request
下表描述 URL 中提供驗證資訊的查詢參數。
查詢字串參數名稱 | 描述 |
---|---|
X-Amz-Algorithm |
AWS 簽章的版本,以及您用來計算簽章的演算法。
|
X-Amz-Credential |
除了您的存取金鑰 ID 之外,此參數還提供簽章有效的範圍。此值必須與您在簽章計算中使用的範圍相符,這將在下一節中討論。
如需 AWS 區域字串清單,請參閱 AWS 一般參考中的區域端點。 |
X-Amz-Region-Set |
請求將在其中生效的一組區域。標頭 x-amz-region-set 指定為逗號分隔值的清單。 |
X-Amz-Date |
日期和時間格式必須遵循 ISO 8601 標準,且必須使用 |
X-Amz-Expires |
提供所產生預先簽章的 URL 有效的時段 (以秒為單位)。例如,86400 (24 小時)。此值為整數。您可以設定的最小值為 1,最大值為 604,800 (七天)。預先簽章的 URL 的有效期最長為七天,因為您在簽章計算中使用的簽署金鑰有效期最長為七天。 |
X-Amz-SignedHeaders |
列出您用來計算簽章的標頭。簽章計算中需要下列標頭:
為了提高安全性,您應簽署計劃包含在請求中的所有請求標頭。 |
X-Amz-Signature |
提供簽章以驗證您的請求。此簽章必須與服務計算的簽章相符;否則,服務會拒絕請求。例如 簽章計算將在下一節中描述。 |
X-Amz-Security-Token |
選用的憑證參數 (如果使用來自 STS 服務的憑證)。 |