身分驗證方法 - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

身分驗證方法

重要

除非您使用 AWS SDK 或 CLI,否則您必須撰寫程式碼來計算在要求中提供驗證資訊的簽章。簽名版本 4 中的 AWS 簽名計算可能是一項複雜的任務,我們建議您盡可能使用 AWS SDK 或 CLI。

您可以使用下列其中一種方法來表示身分驗證資訊。

HTTP 授權標頭

HTTP Authorization 標頭是驗證請求的最常見方法。所有 REST API 操作 (使用 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 簽章版本 4 進行驗證時,必須提供此值。字串會指定 AWS 簽章版本 4 (AWS 4) 和簽署演算法 ()。HMAC-SHA256

Credential

您的存取金鑰 ID 和範圍資訊,包括用於計算簽章的日期、區域和服務。

此字串的格式如下:

<your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

其中:使用 YYYYMMDD 格式指定 <date> 值。將請求傳送至 Amazon S3 時 <aws-service> 值為 s3。

SignedHeaders

用於計算 Signature 的請求標頭清單 (以分號分隔)。此清單僅包含標頭名稱,且標頭名稱必須為小寫。例如:主機;範圍;x-amz-date

簽章

256 位元簽章以 64 個小寫十六進位字元表示。例如:fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

請注意,簽章計算因您選擇傳輸承載的選項而異。

查詢字串參數

您可以使用查詢字串以完全在 URL 中表達請求。在此情況下,您可以使用查詢參數來提供請求資訊,包括驗證資訊。由於請求簽章是 URL 的一部分,因此此類型 URL 通常稱為預先簽章的 URL。您可以使用預先簽章的 URL 在 HTML 中嵌入可點選連結,有效期最長可達七天。如需詳細資訊,請參閱 Amazon S3 API 參考中的驗證請求:使用查詢參數 (AWS 簽章版本 4)

以下是預先簽章的 URL 範例。為了便於閱讀,向此範例新增了分行符號:

https://s3.amazonaws.com/examplebucket/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,您可以將此參數值設定為。AWS 4-HMAC-SHA256此字串識別 AWS 第 4 版簽署程序 (AWS 4) 和 HMAC-SHA256 演算法 (HMAC-SHA256)。

X-Amz-Credential

除了您的存取金鑰 ID 之外,此參數也會提供簽章有效的範圍 (AWS 地區和服務)。此值必須與您在簽章計算中使用的範圍相符,這將在下一節中討論。

此參數值的一般格式如下:

<your-access-key-id>/<date>/<AWS Region>/<AWS-service>/aws4_request

例如:AKIAIOSFODNN7EXAMPLE/20130721/us-east-1/s3/aws4_request

如需地 AWS 區字串的清單,請參閱AWS 一般參考中的地區端點

X-Amz-Date

日期和時間格式必須遵循 ISO 8601 標準,且必須使用 yyyyMMddTHHmmssZ 格式進行格式化。例如,如果日期和時間是 "08/01/2016 15:32:41.982-700",則必須先將其轉換為 UTC (國際標準時間),然後以 "20160801T223241Z" 形式提交。

X-Amz-Expires

提供所產生預先簽章的 URL 有效的時段 (以秒為單位)。例如,86400 (24 小時)。此值為整數。您可以設定的最小值為 1,最大值為 604,800 (七天)。預先簽章的 URL 的有效期最長為七天,因為您在簽章計算中使用的簽署金鑰有效期最長為七天。

X-阿姆斯特丹 SignedHeaders

列出您用來計算簽章的標頭。簽章計算中需要下列標頭:

  • HTTP 主機標頭。

  • 您計劃新增至請求的任何 x-amz-* 標頭。

為了提高安全性,您應簽署計劃包含在請求中的所有請求標頭。

X-Amz-Signature

提供簽章以驗證您的請求。此簽章必須與服務計算的簽章相符;否則,服務會拒絕請求。例如:733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7

簽章計算將在下一節中描述。

X-Amz-Security-Token

選用的憑證參數 (如果使用來自 STS 服務的憑證)。