Chatbot-Anfragen authentifizieren - Amazon Chime

Sie müssen ein Amazon Chime Chime-Systemadministrator sein, um die Schritte in diesem Handbuch ausführen zu können. Wenn Sie Hilfe mit dem Amazon Chime Chime-Desktop-Client, der Web-App oder der mobilen App benötigen, finden Sie weitere Informationen unter Support erhalten im Amazon Chime Chime-Benutzerhandbuch.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Chatbot-Anfragen authentifizieren

Sie können Anfragen authentifizieren, die von einem Amazon Chime Chime-Chatroom an Ihren Chatbot gesendet wurden. Berechnen Sie dazu eine Signatur auf der Grundlage der Anfrage. Überprüfen Sie dann, ob die berechnete Signatur mit der Signatur im Anforderungsheader übereinstimmt. Amazon Chime verwendet den HMAC SHA256-Hash, um die Signatur zu generieren.

Wenn Ihr Chatbot für Amazon Chime mit einem ausgehenden HTTPS-Endpunkt konfiguriert ist, verwenden Sie die folgenden Authentifizierungsschritte.

Um eine signierte Anfrage von Amazon Chime für einen Chatbot zu validieren, für den ein ausgehender HTTPS-Endpunkt konfiguriert ist
  1. Rufen Sie den Chime-Signature-Header aus der HTTP-Anforderung ab.

  2. Rufen Sie den Chime-Request-Timestamp-Header und den Text der Anforderung ab. Verwenden Sie anschließend einen vertikalen Strich als Trennzeichen zwischen den beiden Elementen, um eine Zeichenfolge zu erstellen.

  3. Verwenden Sie denSecurityTokenaus CreateBot Antwort als Anfangsschlüssel vonHMAC_SHA_256, und hashen Sie die Zeichenfolge, die Sie in Schritt 2 erstellt haben.

  4. Kodieren Sie den gehashten Byte mit Base64-Encoder zu einer Signatur-Zeichenfolge.

  5. Vergleichen Sie diese berechnete Signatur mit derjenigen im Chime-Signature-Header.

Das folgende Codebeispiel demonstriert das Generieren einer Signatur mit 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; } }

Der ausgehende HTTPS-Endpunkt muss auf die Amazon Chime Chime-Anfrage antworten mit200 OKinnerhalb von 2 Sekunden. Andernfalls schlägt die Anforderung fehl. Wenn der ausgehende HTTPS-Endpunkt nach 2 Sekunden nicht verfügbar ist, möglicherweise aufgrund eines Verbindungs- oder Lese-Timeouts, oder wenn Amazon Chime einen 5xx-Antwortcode erhält, wiederholt Amazon Chime die Anfrage zweimal. Die erste Wiederholung wird 200 Millisekunden nach dem Fehlschlagen der ersten Anforderung gesendet. Die zweite Wiederholung wird 400 Millisekunden nach dem Fehlschlagen der vorherigen Wiederholung gesendet. Wenn der ausgehende HTTPS-Endpunkt nach der zweiten Wiederholung immer noch nicht verfügbar ist, schlägt die Anforderung fehl.

Anmerkung

Der Chime-Request-Timestamp ändert sich jedes Mal, wenn die Anforderung wiederholt wird.

Wenn Ihr Chatbot für Amazon Chime mithilfe einer Lambda-Funktion ARN konfiguriert ist, verwenden Sie die folgenden Authentifizierungsschritte.

Um eine signierte Anfrage von Amazon Chime für einen Chatbot mit konfiguriertem Lambda-Funktions-ARN zu validieren
  1. Holen Sie sich dieGlockenspiel-SignaturundChime-Request-Zeitstempelaus der Lambda-AnfrageClientContext, im Base64-codierten JSON-Format.

    { "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
  2. Rufen Sie den Text der Anforderung aus der Anforderungsnutzlast ab.

  3. Verwenden Sie denSecurityTokenausCreateBotAntwort als Anfangsschlüssel vonHMAC_SHA_256, und hashen Sie die Zeichenfolge, die Sie erstellt haben.

  4. Kodieren Sie den gehashten Byte mit Base64-Encoder zu einer Signatur-Zeichenfolge.

  5. Vergleichen Sie diese berechnete Signatur mit derjenigen im Chime-Signature-Header.

Wenn eincom.amazonaws.SdkClientExceptiontritt während des Lambda-Aufrufs auf, Amazon Chime wiederholt die Anfrage zweimal.