本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
计算 Amazon SWF 的 HMAC-SHA 签名
发给 Amazon SWF 的每个请求都必须进行身份验证。AWS SDK 会自动签署您的请求并管理基于令牌的身份验证。但是,如果要写入自己的 HTTP POST
请求,在对请求进行身份验证时,您需要为 HTTP POST Header
内容创建 x-amzn-authorization
值。
有关对标头进行格式设置的详细信息,请参阅 HTTP 标头内容。有关 AWS 版本 3 签名的 AWS SDK for Java 实现,请参阅 AWSSigner.java
创建请求签名
在创建 HMAC-SHA 请求签名之前,必须获取 AWS 凭证(访问密钥 ID 和私有密钥)。
重要
您可以使用 SHA1 或 SHA256 对请求签名。但是,请务必在整个签名过程中使用同一方法。您选择的方法必须与 HTTP 标头中的 Algorithm
名称的值匹配。
创建请求签名
-
创建一个标准化的 HTTP 请求标头。HTTP 标头规范形式包括以下内容:
-
host
-
以
x-amz-
为开头的任何标头元素
有关所包含的标头的详细信息,请参阅 HTTP 标头内容。
-
对于每一个标头名值对,将标头名称转换为小写字母 (但不是标头值)。
-
将标头名称映射到逗号分隔的标头值。
x-amz-example: value1 x-amz-example: value2 => x-amz-example:value1,value2
有关更多信息,请参阅 RFC 2616 的第 4.2 节
。 -
对于每个标头名称-值对,将其转换成
headerName:headerValue
格式的字符串。从headerName
和headerValue
的开头和结尾删除所有空白,冒号两边不留空格。x-amz-example1:value1,value2 x-amz-example2:value3
-
在转换好的每一个字符串 (包括最后一个字符串) 后插入一个换行符 (
U+000A
)。 -
按照字母顺序用标头名称给转换好的字符串集合分类。
-
-
创建包含以下项目的待签字符串值:
-
第
1
行:HTTP 方法 (POST
),其后是换行符。 -
第
2
行:请求 URI (/
),其后是换行符。 -
第
3
行:空字符串,其后是换行符。注意
通常,这里会显示查询字符串,但 Amazon SWF 不使用查询字符串。
-
第
4–n
行:表示步骤 1 中计算的规范请求标头的字符串,后跟换行符。该换行符在 HTTP 请求的标头与正文之间创建一个空白行。有关更多信息,请参见 RFC 2616。 -
请求正文,不 跟换行符。
-
-
计算待签字符串值的 SHA256 或 SHA1 摘要。在整个过程中采用同一种 SHA 方法。
-
使用上一步骤中的结果值的 SHA256 或 SHA1 摘要(取决于您使用的方法)yi使用
GetSessionToken
API 操作从 AWS Security Token Service 获取的临时秘密访问密钥来计算 HMAC-SHA,并对其进行 Base64 编码。注意
Amazon SWF 希望在进行 Base64 编码的 HMAC-SHA 值末尾添加一个等号 (
=
)。如果 Base64 编码程序不包括附加等号,请在值的结尾附加一个等号。有关在 Amazon SWF 和其他 AWS 服务中使用临时安全凭证的更多信息,请参阅《IAM User Guide》中的 AWS Services That Work with IAM。
-
将生成的值作为
Signature
名称的值放入向 Amazon SWF 发送的 HTTP 请求的x-amzn-authorization
标头中。 -
Amazon SWF 会验证该请求并执行指定操作。