

# 对 SOAP 请求进行身份验证
<a name="SOAPAuthentication"></a>

**注意**  
 Amazon S3 的 SOAP API 不适用于新客户，并将于 2025 年 8 月 31 日接近使用寿命终止（EOL）。我们建议您使用 REST API 或 AWS 开发工具包。

所有非匿名的请求都必须包含身份验证信息，以便确立提出请求的委托人的身份。在 SOAP 中，身份验证信息放置在 SOAP 请求的以下元素中：
+ 您的 AWS 访问密钥 ID
**注意**  
创建经身份验证的 SOAP 请求时，不支持临时的安全凭证。有关凭证类型的更多信息，请参阅 [提出请求](MakingRequests.md)。
+ `Timestamp:` 它必须采用协调世界时 (Greenwich Mean Time) 时区的日期时间 (转到 [http://www.w3.org/TR/xmlschema-2/\#dateTime](http://www.w3.org/TR/xmlschema-2/#dateTime))，例如 `2009-01-01T12:00:00.000Z`。如果这个时间戳与 Amazon S3 服务器上的时间相差 15 分钟以上，授权将失败。
+ `Signature:`“AmazonS3” \+ OPERATION \+ Timestamp 串联的 RFC 2104 HMAC-SHA1 摘要（转至 [http://www.ietf.org/rfc/rfc2104.txt](http://www.ietf.org/rfc/rfc2104.txt)）将您的 AWS 秘密访问密钥用作密钥。例如，在下面的 CreateBucket 示例请求中，签名元素将包含“AmazonS3CreateBucket2009-01-01T12:00:00.000Z”值的 HMAC-SHA1 摘要：

例如，在下面的 CreateBucket 示例请求中，签名元素将包含“AmazonS3CreateBucket2009-01-01T12:00:00.000Z”值的 HMAC-SHA1 摘要：

**Example**  

```
1. <CreateBucket xmlns="https://doc.s3.amazonaws.com/2006-03-01">
2.   <Bucket>quotes</Bucket>
3.   <Acl>private</Acl>
4.   <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId>
5.   <Timestamp>2009-01-01T12:00:00.000Z</Timestamp>
6.   <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature>
7. </CreateBucket>
```

**注意**  
必须使用 SSL 将经身份验证的和匿名的 SOAP 请求发送到 Amazon S3。若您通过 HTTP 发送 SOAP 请求，Amazon S3 将返回错误。

**重要**  
由于对如何丢弃额外的时间精度存在不同的解释，.NET 用户应注意不要使用过于具体的时间戳来发送 Amazon S3。可以通过手动构建只有毫秒精度的 `DateTime` 对象完成此操作。