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

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

計算 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 名稱的值。

建立請求簽章

  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 不會使用查詢字串。

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

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

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

  4. 使用 API GetSessionToken動作,使用 SHA256 或 SHA1 摘要 (取決於您使用的方法) 計算和 Base64-encode HMAC-SHA 上一個步驟所產生的值,以及來自 AWS 安全權杖服務的臨時秘密存取金鑰。

    注意

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

    如需搭配 Amazon SWF 和其他 AWS 服務使用臨時安全登入資料的詳細資訊,請參閱《IAM 使用者指南》中的AWS 與 IAM 搭配使用的服務

  5. 將產生的值作為 Amazon SWF HTTP 請求x-amzn-authorization標頭中Signature名稱的值。

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