

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

# 身分驗證方法
<a name="reference_sigv-authentication-methods"></a>

**重要**  
除非您使用 AWS SDKs或 CLI，否則您必須撰寫程式碼來計算在請求中提供身分驗證資訊的簽章。Signature 第 4 版中的 AWS 簽章計算可能是一項複雜的任務，我們建議您盡可能使用 AWS SDKs或 CLI。

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

## HTTP 授權標頭
<a name="aws-signing-authentication-methods-http"></a>

HTTP `Authorization` 標頭是驗證請求的最常見方法。所有 REST API 操作 (使用 `POST` 請求的以瀏覽器為基礎的上傳除外) 需要此標頭。

下列範例展示了 SigV4 和 SigV4a 的 `Authorization` 標頭值。為了便於閱讀，向此範例新增了分行符號。在程式碼中，標頭必須是一個連續字串。演算法與憑證之間沒有逗號，但其他元素必須以逗號分隔。

**Example SigV4**  

```
Authorization: AWS4-HMAC-SHA256
Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, 
SignedHeaders=host;range;x-amz-date, 
Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
```

**Example SigV4a**  

```
Authorization: AWS4-ECDSA-P256-SHA256
Credential=AKIAIOSFODNN7EXAMPLE/20130524/s3/aws4_request, 
SignedHeaders=host;range;x-amz-date;x-amz-region-set,
Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
```

下表描述上述範例中授權標頭值的各種元件：


| 元件 | Description | 
| --- | --- | 
|  Authorization  | 用於計算簽章的演算法。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/reference_sigv-authentication-methods.html)  | 
|  Credential  |  存取金鑰 ID 和範圍資訊。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/reference_sigv-authentication-methods.html) 使用 YYYYMMDD 格式指定 <date> 值。將請求傳送至 Amazon S3 時 <aws-service> 值為 S3。  | 
|  SignedHeaders  |   用於計算簽章的請求標頭清單 (以分號分隔)。此清單僅包含標頭名稱，且標頭名稱必須為小寫。例如：`host;range;x-amz-date` 對於 SigV4a，您必須包含區域集標頭，指定請求將在其中生效的區域集。標頭 X-Amz-Region-Set 將指定為逗號分隔值的清單。  | 
|  簽章  |  256 位元簽章以 64 個小寫十六進位字元表示。例如：`fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024` 請注意，簽章計算因您選擇傳輸承載的選項而異。  | 

## 查詢字串參數
<a name="aws-signing-authentication-methods-query"></a>

您可以使用查詢字串以完全在 URL 中表達請求。在此情況下，您可以使用查詢參數來提供請求資訊，包括驗證資訊。由於請求簽章是 URL 的一部分，因此此類型 URL 通常稱為預先簽章的 URL。您可以使用預先簽章的 URL 在 HTML 中嵌入可點選連結，有效期最長可達七天。如需詳細資訊，請參閱《*Amazon S3 API 參考*》中的[驗證請求：使用查詢參數 (AWS 簽章第 4 版）](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html)。

下列範例展示了 SigV4 和 SigV4a 預先簽章的 URL。為了便於閱讀，向此範例新增了分行符號：

**Example 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>
```

**Example 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 中提供驗證資訊的查詢參數。


| 查詢字串參數名稱 | Description | 
| --- | --- | 
|  X-Amz-Algorithm  |   AWS 簽章的版本，以及您用來計算簽章的演算法。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/reference_sigv-authentication-methods.html)  | 
|  X-Amz-Credential  |  除了存取金鑰 ID 外，此參數還提供了簽章有效的範圍。此值必須與您在簽章計算中使用的範圍相符，這將在下一節中討論。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/reference_sigv-authentication-methods.html) 如需 AWS 區域字串清單，請參閱《 *AWS 一般參考*》中的[區域端點](https://docs.aws.amazon.com//general/latest/gr/rande.html#regional-endpoints)。  | 
|  X-Amz-Region-Set  |  請求將在其中生效的區域集。標頭 x-amz-region-set 將指定為逗號分隔值的清單。  | 
|  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-Amz-SignedHeaders  |  列出您用來計算簽章的標頭。簽章計算中需要下列標頭： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/reference_sigv-authentication-methods.html) 為了提高安全性，您應簽署計劃包含在請求中的所有請求標頭。  | 
|  X-Amz-Signature  |  提供簽章以驗證您的請求。此簽章必須與服務計算的簽章相符；否則，服務會拒絕請求。例如 `733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7` 簽章計算將在下一節中描述。  | 
|  X-Amz-Security-Token  |  選用的憑證參數 (如果使用來自 STS 服務的憑證)。  | 