A validação de identidade garante que cada conversa realmente pertence ao usuário autenticado da sua aplicação, evitando impersonação e protegendo o histórico de mensagens.
Ela funciona usando um HMAC SHA256 gerado no seu backend.
Onde pegar o token HMAC
Vá em:
Configurações → Inboxes → Configuração → Identity Validation
Copie o token exibido nessa seção.
Esse token é secreto e deve ficar apenas no backend da sua aplicação.
Como funciona
Você gera um hash HMAC SHA256 usando:
-
o token secreto do widget
-
o identificador único do usuário
Depois envia esse hash junto com o setUser.
Exemplo completo no frontend
window.$chatwoot.setUser("user-123", {
name: "João Silva",
email: "[email protected]",
identifier_hash: "HASH_GERADO_NO_BACKEND"
});
O identifier_hash precisa ser gerado no servidor, nunca no frontend.
Gerando o HMAC no backend
Node.js
const crypto = require("crypto");
const key = "SEU_TOKEN_HMAC";
const identifier = "user-123";
const hash = crypto
.createHmac("sha256", key)
.update(identifier)
.digest("hex");
console.log(hash);
PHP
<?php
$key = 'SEU_TOKEN_HMAC';
$message = 'user-123';
$identifier_hash = hash_hmac('sha256', $message, $key);
echo $identifier_hash;
?>
Python
import hashlib
import hmac
secret = bytes('SEU_TOKEN_HMAC', 'utf-8')
message = bytes('user-123', 'utf-8')
hash = hmac.new(secret, message, hashlib.sha256)
print(hash.hexdigest())
Ruby
require 'openssl'
key = 'SEU_TOKEN_HMAC'
message = 'user-123'
puts OpenSSL::HMAC.hexdigest('sha256', key, message)
Go
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
)
func main() {
secret := []byte("SEU_TOKEN_HMAC")
message := []byte("user-123")
hash := hmac.New(sha256.New, secret)
hash.Write(message)
fmt.Println(hex.EncodeToString(hash.Sum(nil)))
}
Benefícios da validação de identidade
Com a validação ativada:
-
usuários não conseguem acessar conversas de outras pessoas
-
o histórico permanece vinculado ao usuário correto
-
sessões continuam entre dispositivos e navegadores
-
reduz riscos de impersonação
-
aumenta a segurança do atendimento
Recomendação importante
Sempre use:
-
um ID único e permanente do usuário
-
geração do hash apenas no backend
-
HTTPS no site onde o widget está instalado
Nunca exponha o token HMAC no frontend.