

**サポート終了通知**: 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 チャットルームからチャットボットに送信されたリクエストを認証できます。これを行うには、リクエストに基づいて署名を計算します。次に、計算された署名がリクエストのヘッダーの 1 つに一致することを検証します。Amazon Chime は HMAC SHA256 ハッシュを使用してこの署名を生成します。

チャットボットがアウトバウンド HTTPS エンドポイントを使用して Amazon Chime 用に設定されている場合、次の認証ステップを使用します。

**アウトバウンド HTTPS エンドポイントが設定されているチャットボットへの Amazon Chime からの署名リクエストを検証するには**

1. HTTP リクエストから [**Chime-Signature**] を取得します。

1. リクエストの [**Chime-Request-Timestamp**] ヘッダーおよび [**body**] を取得します。次に、2 つの要素の間を区切るために縦線を使用して文字列を形成します。

1. CreateBot 応答から [**Security Token (セキュリティトークン)**] を [**HMAC\$1SHA\$1256**] の最初のキーとして使用し、ステップ 2 で作成した文字列をハッシュします。

1. ハッシュされたバイトを Base64 エンコードで署名文字列にエンコーディングします。

1. この計算された署名と [**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 からの署名リクエストを検証するには**

1. Lambda リクエスト** ClientContext** から **Chime-Signature** と **Chime-Request-Timestamp** を Base64 でエンコードされた JSON 形式で取得します。

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

1. リクエストペイロードから [**body**] を取得します。

1. `CreateBot` 応答から **[セキュリティトークン]** を **[HMAC\$1SHA\$1256]** の最初のキーとして使用し、作成した文字列をハッシュします。

1. ハッシュされたバイトを Base64 エンコードで署名文字列にエンコーディングします。

1. この計算された署名と [**Chime-Signature**] ヘッダーの 1 つを比較します。

Lambda 呼び出し中に `com.amazonaws.SdkClientException` が発生する場合、Amazon Chime はリクエストを 2 回再試行します。