身分驗證方法
重要
除非正在使用 AWS SDK 或 CLI,否則您必須撰寫程式碼來計算在請求中提供驗證資訊的簽章。AWS 第 4 版簽署程序中的簽章計算可能是一項複雜的工作,我們建議您盡可能使用 AWS SDK 或 CLI。
您可以使用下列其中一種方法來表示身分驗證資訊。
HTTP 授權標頭
HTTP Authorization
標頭是驗證請求的最常見方法。所有 REST API 操作 (使用 POST
請求的以瀏覽器為基礎的上傳除外) 需要此標頭。如需有關授權標頭值以及如何計算簽章和相關選項的詳細資訊,請參閱《Amazon S3 API 參考》中的驗證請求:使用授權標頭 (AWS 第 4 版簽署程序)。
以下是 Authorization
標頭值的範例。為了便於閱讀,向此範例新增了分行符號。在程式碼中,標頭必須是一個連續字串。演算法與憑證之間沒有逗號,但其他元素必須以逗號分隔。
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
下表描述上述範例中授權標頭值的各種元件:
元件 | 描述 |
---|---|
授權 |
用於計算簽章的演算法。當您使用 AWS 簽章版本 4 進行驗證時,必須提供此值。字串指定 AWS 第 4 版簽署程序 ( |
Credential |
您的存取金鑰 ID 和範圍資訊,包括用於計算簽章的日期、區域和服務。 此字串的格式如下:
其中:使用 YYYYMMDD 格式指定 |
SignedHeaders |
用於計算 |
簽章 |
256 位元簽章以 64 個小寫十六進位字元表示。例如: 請注意,簽章計算因您選擇傳輸承載的選項而異。 |
查詢字串參數
您可以使用查詢字串以完全在 URL 中表達請求。在此情況下,您可以使用查詢參數來提供請求資訊,包括驗證資訊。由於請求簽章是 URL 的一部分,因此此類型 URL 通常稱為預先簽章的 URL。您可以使用預先簽章的 URL 在 HTML 中嵌入可點選連結,有效期最長可達七天。如需詳細資訊,請參閱《Amazon S3 API 參考》中的驗證請求:使用查詢參數 (AWS 第 4 版簽署程序)。
以下是預先簽章的 URL 範例。為了便於閱讀,向此範例新增了分行符號:
https://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/us-east-1/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &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 簽章的版本以及用於計算簽章的演算法。對於 AWS 第 4 版簽署程序,請將此參數值設定為 |
X-Amz-Credential |
除了您的存取金鑰 ID 外,此參數還提供了簽章有效的範圍 (AWS 區域和服務)。此值必須與您在簽章計算中使用的範圍相符,這將在下一節中討論。 此參數值的一般格式如下:
例如: 如需 AWS 區域字串清單,請參閱《AWS 一般參考》中的區域端點。 |
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 服務的憑證)。 |