对 SOAP 请求进行身份验证 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对 SOAP 请求进行身份验证

注意

HTTP 上的 SOAP 支持已弃用,但 SOAP 仍可在 HTTPS 上使用。SOAP 不支持新增的 Amazon S3 功能。我们建议您使用 REST API 或 Amazon SDK,而不是使用 SOAP。

所有非匿名的请求都必须包含身份验证信息,以便确立提出请求的委托人的身份。在 SOAP 中,身份验证信息放置在 SOAP 请求的以下元素中:

  • 您的 Amazon 访问密钥 ID

    注意

    创建经身份验证的 SOAP 请求时,不支持临时的安全凭证。有关凭证类型的更多信息,请参阅 提出请求

  • Timestamp: 它必须采用协调世界时 (Greenwich Mean Time) 时区的日期时间 (转到 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)将您的 Amazon 秘密访问密钥用作密钥。例如,在下面的 CreateBucket 示例请求中,签名元素将包含“AmazonS3CreateBucket2009-01-01T12:00:00.000Z”值的 HMAC-SHA1 摘要:

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

<CreateBucket xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>quotes</Bucket> <Acl>private</Acl> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2009-01-01T12:00:00.000Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </CreateBucket>
注意

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

重要

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