計算 Amazon SWF 的 HMAC-SHA 簽章 - Amazon Simple Workflow Service

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

計算 Amazon SWF 的 HMAC-SHA 簽章

每個向 Amazon SWF 發出的請求都必須進行身分驗證。所以此AWSSDK 會自動簽署您的請求並管理您的字符型身份驗證。但若您想要撰寫自己的 HTTP POST 請求,您需要為 HTTP POST Header 內容建立 x-amzn-authorization 值,做為請求身份驗證的一部分。

如需格式化這些標頭的詳細資訊,請參閱「HTTP 標頭內容」。對於AWS SDK for Java的實作AWS版本 3 簽名,請參閲AWSSigner.java類別。

建立請求簽章

在您建立 HMAC-SHA 請求簽章之前,您必須取得您的 AWS 登入資料 (存取金鑰 ID 和私密金鑰)。

重要

您可以使用 SHA1 或 SHA256 簽署您的請求。但整個簽署過程中請務必使用同一個方法。您選擇的方法必須符合 HTTP 標頭中 Algorithm 名稱的值。

建立請求簽章

  1. 建立 HTTP 請求標頭的正式格式。HTTP 標頭的正式格式包含以下內容:

    • host

    • 任何以 x-amz- 開頭的標頭元素

    如需這些內含標頭的詳細資訊,請參閱「HTTP 標頭內容」。

    1. 將每一個標頭名稱值對的標頭名稱 (不是標頭值) 轉換成小寫。

    2. 建立逗號分隔標頭值的標頭名稱映射。

      x-amz-example: value1 x-amz-example: value2 => x-amz-example:value1,value2

      如需詳細資訊,請參閱「RFC 2616 的 4.2 節」。

    3. 將每一個標頭名稱值對的名稱值對轉換成格式為 headerName:headerValue 的字串。裁剪 headerNameheaderValue 開頭和結尾的任何空格,冒號兩側不留空格。

      x-amz-example1:value1,value2 x-amz-example2:value3
    4. 在每個轉換的字串後面插入新的一行 (U+000A),包括最後的字串。

    5. 依標頭名稱按字母順序排序轉換的字串集合。

  2. 建立登入字串值,包含下列項目:

    • 1:HTTP 方法 (POST),後面接新行。

    • 2:請求 URI (/),後面接新行。

    • 3:空字串,後面接新行。

      注意

      查詢字串一般會出現在此,但 Amazon SWF 不使用查詢字串。

    • LINES4–n:代表您在步驟 1 中計算之正式請求標頭的字串,後面接新行。此新行會在標頭和 HTTP 請求內文之間建立空白行。如需詳細資訊,請參閱 RFC 2616

    • 請求內文後面「不」接新行。

  3. 運算登入字串值的 SHA256 或 SHA1 摘要。整個過程使用同一個 SHA 方法。

  4. 使用上一個步驟所得值的 SHA256 或 SHA1 摘要 (視您使用的方法而定),以及暫時私密存取金鑰來計算 HMAC-SHA 並進行 Base64 編碼。AWS使用GetSessionTokenAPI 動作。

    注意

    Amazon SWF 期望一個等號 (=) 在 Base64 編碼的 HMAC-SHA 值結尾處。如果您的 Base64 編碼例行作業不包含附加的等號,請在此值結尾處加上等號。

    如需將暫時安全憑證結合使用 Amazon SWF 和其他AWS服務,請參閲AWS可搭配 IAM 運作的服務中的IAM User Guide

  5. 將結果值放在Signature名稱中x-amzn-authorization發送給 Amazon SWF 的 HTTP 請求標頭。

  6. Amazon SWF 會驗證請求並執行指定的操作。