Otentikasi permintaan chatbot - Amazon Chime

Anda harus menjadi administrator sistem Amazon Chime untuk menyelesaikan langkah-langkah dalam panduan ini. Jika Anda memerlukan bantuan dengan klien desktop Amazon Chime, aplikasi web, atau aplikasi seluler, lihat Mendapatkan dukungan di Panduan Pengguna Amazon Chime.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Otentikasi permintaan chatbot

Anda dapat mengautentikasi permintaan yang dikirim ke chatbot Anda dari ruang obrolan Amazon Chime. Untuk melakukan ini, hitung tanda tangan berdasarkan permintaan. Kemudian, validasi bahwa tanda tangan yang dihitung cocok dengan yang ada di header permintaan. Amazon Chime menggunakan hash HMAC SHA256 untuk menghasilkan tanda tangan.

Jika chatbot Anda dikonfigurasi untuk Amazon Chime menggunakan titik akhir HTTPS keluar, gunakan langkah autentikasi berikut.

Untuk memvalidasi permintaan yang ditandatangani dari Amazon Chime untuk chatbot dengan titik akhir HTTPS keluar yang dikonfigurasi
  1. DapatkanTanda Tangan Loncengheader dari permintaan HTTP.

  2. DapatkanLonceng Permintaan-TimestampHeader danbadandari permintaan. Kemudian, gunakan bilah vertikal sebagai pembatas antara dua elemen untuk membentuk string.

  3. GunakanSecurityTokendari CreateBot respon sebagai kunci awalHMAC_SHA_256, dan hash string yang Anda buat di langkah 2.

  4. Mengkodekan byte hash dengan encoder Base64 ke string tanda tangan.

  5. Bandingkan tanda tangan yang dihitung ini dengan yang ada diTanda Tangan Loncengsundulan

Contoh kode berikut menunjukkan cara menghasilkan tanda tangan menggunakan 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; } }

Titik akhir HTTPS keluar harus menanggapi permintaan Amazon Chime dengan200 OKdalam waktu 2 detik. Jika tidak, permintaan gagal. Jika titik akhir HTTPS keluar tidak tersedia setelah 2 detik, mungkin karena batas waktu Koneksi atau Baca, atau jika Amazon Chime menerima kode respons 5xx, Amazon Chime akan mencoba ulang permintaan tersebut dua kali. Coba lagi pertama dikirim 200 milidetik setelah permintaan awal gagal. Percobaan kedua dikirim 400 milidetik setelah percobaan ulang sebelumnya gagal. Jika titik akhir HTTPS keluar masih tidak tersedia setelah percobaan ulang kedua, permintaan gagal.

catatan

TheLonceng Permintaan-Timestampberubah setiap kali permintaan dicoba ulang.

Jika chatbot Anda dikonfigurasi untuk Amazon Chime menggunakan ARN fungsi Lambda, gunakan langkah autentikasi berikut.

Untuk memvalidasi permintaan yang ditandatangani dari Amazon Chime untuk chatbot dengan fungsi Lambda ARN yang dikonfigurasi
  1. DapatkanTanda Tangan LoncengdanLonceng Permintaan-Timestampdari permintaan LambdaClientContext, dalam format JSON yang dikodekan Base64.

    { "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
  2. Dapatkanbadanpermintaan dari payload permintaan.

  3. GunakanSecurityTokendariCreateBotrespon sebagai kunci awalHMAC_SHA_256, dan hash string yang Anda buat.

  4. Mengkodekan byte hash dengan encoder Base64 ke string tanda tangan.

  5. Bandingkan tanda tangan yang dihitung ini dengan yang ada diTanda Tangan Loncengsundulan

Jikacom.amazonaws.SdkClientExceptionterjadi selama pemanggilan Lambda, Amazon Chime mencoba ulang permintaan dua kali.