支援終止通知:在 2026 年 2 月 20 日, AWS 將終止對 Amazon Chime 服務的支援。2026 年 2 月 20 日之後,您將無法再存取 Amazon Chime 主控台或 Amazon Chime 應用程式資源。如需詳細資訊,請造訪部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以從 Amazon Chime 聊天室驗證傳送至聊天機器人的請求。若要執行此操作,請根據請求計算簽章。然後,驗證計算的簽章是否符合請求標頭上的簽章。Amazon Chime 使用 HMAC SHA256 雜湊來產生簽章。
如果您的聊天機器人是使用傳出 HTTPS 端點為 Amazon Chime 設定,請使用下列身分驗證步驟。
為已設定傳出 HTTPS 端點的聊天機器人驗證來自 Amazon Chime 的簽署請求
取得 HTTP 請求的 Chime-Signature 標頭。
取得請求的 Chime-Request-Timestamp 標頭和內文。然後,使用垂直分隔號做為兩個元素之間的分隔符號,以形成字串。
使用 CreateBot 回應中的 SecurityToken 做為 HMAC_SHA_256 的初始金鑰,然後雜湊在步驟 2 中建立的字串。
使用 Base64 編碼器將雜湊的位元組編碼為簽章字串。
比較此運算簽章與 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 簽署請求
從 Lambda 請求 ClientContext 取得以 Base64 編碼的 JSON 格式的 Chime-Signature 和 Chime-Request-Timestamp。
{ "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
從請求承載取得請求的內文。
使用來自
CreateBot
回應的 SecurityToken 做為 HMAC_SHA_256 的初始金鑰,並雜湊您建立的字串。使用 Base64 編碼器將雜湊的位元組編碼為簽章字串。
比較此運算簽章與 Chime-Signature 標頭中的簽章。
如果在 Lambda 調用期間com.amazonaws.SdkClientException
發生 ,Amazon Chime 會重試請求兩次。