

**支援終止通知**：在 2026 年 2 月 20 日， AWS 將終止對 Amazon Chime 服務的支援。2026 年 2 月 20 日之後，您將無法再存取 Amazon Chime 主控台或 Amazon Chime 應用程式資源。如需詳細資訊，請造訪[部落格文章](https://aws.amazon.com/blogs/messaging-and-targeting/update-on-support-for-amazon-chime/)。**注意：**這不會影響 [Amazon Chime SDK 服務的](https://aws.amazon.com/chime/chime-sdk/)可用性。

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

# 驗證聊天機器人請求
<a name="auth-bots"></a>

您可以從 Amazon Chime 聊天室驗證傳送至聊天機器人的請求。若要執行此操作，請根據請求計算簽章。然後，驗證計算的簽章是否符合請求標頭上的簽章。Amazon Chime 使用 HMAC SHA256 雜湊來產生簽章。

如果您的聊天機器人是使用傳出 HTTPS 端點為 Amazon Chime 設定，請使用下列身分驗證步驟。

**為已設定傳出 HTTPS 端點的聊天機器人驗證來自 Amazon Chime 的簽署請求**

1. 取得 HTTP 請求的 **Chime-Signature** 標頭。

1. 取得請求的 **Chime-Request-Timestamp** 標頭和**內文**。然後，使用垂直分隔號做為兩個元素之間的分隔符號，以形成字串。

1. 使用 CreateBot 回應中的 **SecurityToken** 做為 **HMAC\_SHA\_256** 的初始金鑰，然後雜湊在步驟 2 中建立的字串。

1. 使用 Base64 編碼器將雜湊的位元組編碼為簽章字串。

1. 比較此運算簽章與 **Chime-Signature** 標頭中的簽章。

以下程式碼範例示範如何使用 Java 產生簽章。

```
        private final String DELIMITER = "|";
        private final String HMAC_SHA_256 = "HmacSHA256";
   
        private String generateSignature(String securityToken, String requestTime, String requestBody) 
        {
            try {
                final Mac mac = Mac.getInstance(HMAC_SHA_256);
                SecretKeySpec key = new SecretKeySpec(securityToken.getBytes(UTF_8), HMAC_SHA_256);
                mac.init(key);
                String data = requestTime + DELIMITER + requestBody;
                byte[] rawHmac = mac.doFinal(data.getBytes(UTF_8));

                return Base64.getEncoder().encodeToString(rawHmac);
                } 
            catch (Exception e) {
                throw e;
                }
         }
```

傳出 HTTPS 端點必須在 2 秒`200 OK`內以 回應 Amazon Chime 請求。否則，請求將失敗。如果傳出 HTTPS 端點在 2 秒後無法使用，可能是因為連線或讀取逾時、 或 Amazon Chime 收到 5xx 回應碼，Amazon Chime 會重試請求兩次。第一次重試會在初次請求失敗過 200 毫秒後送出。第二次重試會在前一次重試失敗過 400 毫秒後送出。如果第二次重試後仍無法取得傳出 HTTPS 端點，請求將失敗。

**注意**  
**Chime-Request-Timestamp** 會隨請求每次重試而變更。

如果您的聊天機器人是使用 Lambda 函數 ARN 為 Amazon Chime 設定，請使用下列身分驗證步驟。

**驗證已設定 Lambda 函數 ARN 之聊天機器人的 Amazon Chime 簽署請求**

1. 從 Lambda 請求 **ClientContext** 取得以 Base64 編碼的 JSON 格式的 **Chime-Signature** 和 **Chime-Request-Timestamp**。

   ```
   {
   "Chime-Signature" : "1234567890",
   "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z"
   }
   ```

1. 從請求承載取得請求的**內文**。

1. 使用來自`CreateBot`回應的 **SecurityToken** 做為 **HMAC\_SHA\_256** 的初始金鑰，並雜湊您建立的字串。

1. 使用 Base64 編碼器將雜湊的位元組編碼為簽章字串。

1. 比較此運算簽章與 **Chime-Signature** 標頭中的簽章。

如果在 Lambda 調用期間`com.amazonaws.SdkClientException`發生 ，Amazon Chime 會重試請求兩次。