Use este guia para ativar validação de identidade no widget da IAra usando HMAC.

## Para que serve

A validação de identidade reduz risco de personificação. Ela garante que o usuário identificado no widget foi assinado pelo seu backend antes de ser aceito pela IAra.

## Antes de começar

- Acesse a caixa de entrada do tipo **Site**.
- Copie o token de HMAC em **Configurações da caixa > Configuração > Validação de identidade**.
- Gere o hash sempre no backend. Nunca exponha o segredo HMAC no navegador.

## Como funciona

Você gera um hash SHA256 usando o segredo HMAC da caixa e o identificador único do usuário, por exemplo `cliente-123`.

## Exemplos de geração de HMAC

### Node.js

```js
const crypto = require('crypto');

const key = '<webwidget-hmac-token>';
const identifier = '<identifier>';

const identifierHash = crypto
  .createHmac('sha256', key)
  .update(identifier)
  .digest('hex');
```

### Python

```python
import hashlib
import hmac

secret = bytes('<webwidget-hmac-token>', 'utf-8')
identifier = bytes('<identifier>', 'utf-8')

identifier_hash = hmac.new(secret, identifier, hashlib.sha256).hexdigest()
```

### Ruby

```ruby
require 'openssl'

key = '<webwidget-hmac-token>'
identifier = '<identifier>'

identifier_hash = OpenSSL::HMAC.hexdigest('sha256', key, identifier)
```

### PHP

```php
<?php
$key = '<webwidget-hmac-token>';
$identifier = '<identifier>';

$identifier_hash = hash_hmac('sha256', $identifier, $key);
?>
```

## Enviar hash para o widget

```js
window.$chatwoot.setUser('cliente-123', {
  name: 'Maria Souza',
  email: 'maria@example.com',
  identifier_hash: 'HASH_GERADO_NO_BACKEND',
});
```

## Cuidados de segurança

- Não gere o HMAC no frontend.
- Não publique o token HMAC no código do site.
- Use um identificador estável para o usuário.
- Regere o hash quando o usuário muda de sessão ou identidade.