本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
計算 Amazon SWF 的 HMAC-SHA 簽章
對 Amazon SWF 的每項請求都必須經過驗證。 AWS SDKs 會自動簽署您的請求,並管理您的字符型身分驗證。但若您想要撰寫自己的 HTTP POST
請求,您需要為 HTTP POST Header
內容建立 x-amzn-authorization
值,做為請求身分驗證的一部分。
如需格式化這些標頭的詳細資訊,請參閱「HTTP 標頭內容」。如需第 3 AWS 版簽署的 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 方法。
-
使用 API
GetSessionToken
動作,使用 SHA256 或 SHA1 摘要 (取決於您使用的方法) 計算和 Base64-encode HMAC-SHA 上一個步驟所產生的值,以及來自 AWS 安全權杖服務的臨時秘密存取金鑰。注意
Amazon SWF 預期 Base64-encoded HMAC-SHA 值結尾會有等於符號 (
=
)。如果您的 Base64 編碼例行作業不包含附加的等號,請在此值結尾處加上等號。如需搭配 Amazon SWF 和其他 AWS 服務使用臨時安全登入資料的詳細資訊,請參閱《IAM 使用者指南》中的AWS 與 IAM 搭配使用的服務。
-
將產生的值作為 Amazon SWF HTTP 請求
x-amzn-authorization
標頭中Signature
名稱的值。 -
Amazon SWF 會驗證請求並執行指定的操作。