Você deve ser administrador do sistema Amazon Chime para concluir as etapas deste guia. Se você precisar de ajuda com o cliente de desktop, a aplicação web ou aplicativo móvel do Amazon Chime, consulte Getting support no Guia do usuário do Amazon Chime.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Autenticar solicitações do chatbot
Você pode autenticar solicitações enviadas ao seu chatbot a partir de uma sala de bate-papo do Amazon Chime. Para fazer isso, calcule uma assinatura com base na solicitação. Depois, valide que a assinatura computada corresponde à do cabeçalho da solicitação. O Amazon Chime usa o hash HMAC SHA256 para gerar a assinatura.
Se o seu bot de chat estiver configurado para o Amazon Chime usando um endpoint HTTPS de saída, siga as etapas de autenticação abaixo.
Para validar uma solicitação assinada do Amazon Chime para um bot de chat com um endpoint HTTPS de saída configurado
Obtenha o cabeçalho Chime-Signature na solicitação HTTP.
Obtenha o cabeçalho Chime-Request-Timestamp e o body (corpo) da solicitação. Depois, use uma barra vertical como o delimitador entre os dois elementos para formar uma string.
Use o SecurityToken da resposta CreateBot como a chave inicial deHMAC_SHA_256 e faça hash da string que você criou na etapa 2.
Codifique o byte com hash com o codificador Base64 para uma string de assinatura.
Compare a assinatura computada com aquela no cabeçalho Chime-Signature.
O exemplo de código a seguir demonstra como gerar uma assinatura usando 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; } }
O endpoint HTTPS de saída deve responder à solicitação do Amazon Chime com 200 OK
dentro de 2 segundos. Caso contrário, haverá falha na solicitação. Se o endpoint HTTPS de saída ficar indisponível após 2 segundos, possivelmente devido a uma conexão ou tempo limite de leitura, ou se o Amazon Chime receber um código de resposta 5xx, o tentará executar a solicitação duas vezes. A primeira nova tentativa será enviada 200 milissegundos após a falha na solicitação inicial. A segunda nova tentativa será enviada 400 milissegundos após a falha da nova tentativa. Se o endpoint HTTPS de saída ainda estiver indisponível após a segunda nova tentativa, haverá falha na solicitação.
nota
O Chime-Request-Timestamp é alterado cada vez que a solicitação é executada novamente.
Se o seu bot de chat estiver configurado para que o Amazon Chime use o ARN de uma função Lambda, siga as etapas de autenticação abaixo.
Para validar uma solicitação assinada do Amazon Chime para um bot de chat com o ARN de uma função Lambda configurada
Obtenha a Chime-Signature e o Chime-Request-Timestamp da solicitação do Lambda ClientContext no formato JSON com codificação Base64.
{ "Chime-Signature" : "1234567890", "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z" }
Obtenha o body (corpo) da solicitação a partir da carga da solicitação.
Use o SecurityToken da resposta de
CreateBot
como a chave inicial de HMAC_SHA_256 e faça hash na string que você criou.Codifique o byte com hash com o codificador Base64 para uma string de assinatura.
Compare a assinatura computada com aquela no cabeçalho Chime-Signature.
Se uma ocorrer durante a invocação do Lambda, o Amazon Chime tentará executar a solicitação duas vezes.