サポート終了通知: 2026 年 2 月 20 日に、 AWS は Amazon Chime サービスのサポートを終了します。2026 年 2 月 20 日以降、Amazon Chime コンソールまたは Amazon Chime アプリケーションリソースにアクセスできなくなります。詳細については、ブログ記事
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Chime チャットルームからチャットボットに送信されたリクエストを認証できます。これを行うには、リクエストに基づいて署名を計算します。次に、計算された署名がリクエストのヘッダーの 1 つに一致することを検証します。Amazon Chime は HMAC SHA256 ハッシュを使用してこの署名を生成します。
チャットボットがアウトバウンド HTTPS エンドポイントを使用して Amazon Chime 用に設定されている場合、次の認証ステップを使用します。
アウトバウンド HTTPS エンドポイントが設定されているチャットボットへの Amazon Chime からの署名リクエストを検証するには
HTTP リクエストから [Chime-Signature] を取得します。
リクエストの [Chime-Request-Timestamp] ヘッダーおよび [body] を取得します。次に、2 つの要素の間を区切るために縦線を使用して文字列を形成します。
CreateBot 応答から [Security Token (セキュリティトークン)] を [HMAC_SHA_256] の最初のキーとして使用し、ステップ 2 で作成した文字列をハッシュします。
ハッシュされたバイトを Base64 エンコードで署名文字列にエンコーディングします。
この計算された署名と [Chime-Signature] ヘッダーの 1 つを比較します。
次のコードサンプルでは、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 リクエストに応答する必要があります。それ以外の場合、このリクエストは失敗します。2 秒後にアウトバウンド HTTPS エンドポイントが使用不可である場合 (接続または読み取りタイムアウトのため)、あるいは Amazon Chime が 5xx 応答コードを受信する場合、Amazon Chime はリクエストを 2 回再試行します。1 回目の再試行は、最初のリクエストが失敗してから 200 ミリ秒後に送信されます。2 回目の再試行は、前の再試行が失敗してから 400 ミリ秒後に送信されます。2 回目の再試行後でも発信 HTTPS エンドポイントがまだ使用不可である場合、このリクエストは失敗します。
注記
[Chime-Request-Timestamp] はリクエストの再試行ごとに変更します。
Lambda 関数 ARN を使用して Amazon Chime 用のチャットボットが設定されている場合、次の認証ステップを使用します。
Lambda 関数 ARN が設定されているチャットボットへの Amazon Chime からの署名リクエストを検証するには
Lambda リクエスト ClientContext から Chime-Signature と Chime-Request-Timestamp を Base64 でエンコードされた JSON 形式で取得します。
{ "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
リクエストペイロードから [body] を取得します。
CreateBot
応答から [セキュリティトークン] を [HMAC_SHA_256] の最初のキーとして使用し、作成した文字列をハッシュします。ハッシュされたバイトを Base64 エンコードで署名文字列にエンコーディングします。
この計算された署名と [Chime-Signature] ヘッダーの 1 つを比較します。
Lambda 呼び出し中に com.amazonaws.SdkClientException
が発生する場合、Amazon Chime はリクエストを 2 回再試行します。