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