Autentica le richieste DLQ - Amazon Chime

Devi essere un amministratore di sistema Amazon Chime per completare i passaggi di questa guida. Se hai bisogno di assistenza con il client desktop, l'app Web o l'app mobile Amazon Chime, consulta Ottenere assistenza nella Guida per l'utente di Amazon Chime.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autentica le richieste DLQ

Puoi autenticare le richieste inviate al tuo chatbot da una chat room di Amazon Chime. A tale scopo, calcola una firma in base alla richiesta. Quindi, verifica che la firma calcolata corrisponda a quella nell'intestazione della richiesta. Amazon Chime utilizza l'hash HMAC SHA256 per generare la firma.

Se il tuo chatbot è configurato per Amazon Chime utilizzando un endpoint HTTPS in uscita, utilizza i seguenti passaggi di autenticazione.

Per convalidare una richiesta firmata da Amazon Chime per un chatbot con un endpoint HTTPS in uscita configurato
  1. Ottenere l’intestazione Chime-Signature dalla richiesta HTTP.

  2. Ottenere l'intestazione Chime-Request-Timestamp e il body (corpo) della richiesta. Quindi, utilizzare una barra verticale come delimitatore tra i due elementi per creare una stringa.

  3. Usa ilSecurityTokendal CreateBot risposta come chiave iniziale diHMAC_SHA_256ed esegui l'hash della stringa creata nel passaggio 2.

  4. Codificare il byte con hash con un encoder Base64 in una stringa di firma.

  5. Confrontare questa firma elaborata con quella nell’intestazione Chime-Signature.

Il codice di esempio seguente spiega come generare una firma utilizzando 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; } }

L'endpoint HTTPS in uscita deve rispondere alla richiesta Amazon Chime con200 OKentro 2 secondi. In caso contrario, la richiesta ha esito negativo. Se l'endpoint HTTPS in uscita non è disponibile dopo 2 secondi, probabilmente a causa di un timeout di connessione o lettura, o se Amazon Chime riceve un codice di risposta 5xx, Amazon Chime ritenta la richiesta due volte. Il primo tentativo viene inviato 200 millisecondi dopo che la richiesta iniziale ha esito negativo. Il primo tentativo viene inviato 400 millisecondi dopo che la richiesta precedente ha esito negativo. Se l'endpoint HTTPS in uscita non è ancora disponibile dopo il secondo tentativo, la richiesta ha esito negativo.

Nota

Il Chime-Request-Timestamp cambia ogni volta che la richiesta viene rieseguita.

Se il tuo chatbot è configurato per Amazon Chime utilizzando una funzione Lambda ARN, utilizza i seguenti passaggi di autenticazione.

Per convalidare una richiesta firmata da Amazon Chime per un chatbot con una funzione Lambda (ARN configurato):
  1. Ottieni iFirma DLQeChime-Request-Timestampdalla richiesta LambdaClientContext, in formato JSON con codifica Base64.

    { "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
  2. Ottenere il body (corpo) della richiesta dal payload della richiesta.

  3. Usa ilSecurityTokendalCreateBotrisposta come chiave iniziale diHMAC_SHA_256e esegui l'hash della stringa che hai creato.

  4. Codificare il byte con hash con un encoder Base64 in una stringa di firma.

  5. Confrontare questa firma elaborata con quella nell’intestazione Chime-Signature.

Se uncom.amazonaws.SdkClientExceptionsi verifica durante la chiamata Lambda, Amazon Chime ritenta la richiesta due volte.