# Autenticação

> Esta página é referência técnica para todos os mecanismos de autenticação da Rapid.

Página: https://doc.rapidchargeback.com/referencia/autenticacao/

Esta página é referência técnica para todos os mecanismos de autenticação da Rapid.

## Sua aplicação chamando a Rapid

Use **Basic Auth** com `client_id` como username e `client_secret` como password.

```
Authorization: Basic base64(client_id:client_secret)
```

Endpoints que usam esse método:
- [API de Transações](https://doc.rapidchargeback.com/canais/transactions/visao-geral/): criar, consultar, atualizar, deletar transações
- [Merchants](https://doc.rapidchargeback.com/canais/merchants/listar-merchants/): listar os merchants da empresa
- [Consulta de alertas](https://doc.rapidchargeback.com/callback/consultar-alertas/) e [callback de status](https://doc.rapidchargeback.com/callback/atualizar-status/)
- [API de Evidência](https://doc.rapidchargeback.com/canais/evidence/visao-geral/) e captura server-side (produto Disputa)

### Credenciais

| Credencial | Descrição |
|---|---|
| `client_id` | ID da sua empresa (gerado no painel) |
| `client_secret` | Chave secreta (gerada no painel, tratar como senha) |

### Exemplo de header

```
Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=
```

Onde o valor base64 decodifica para `client_id:client_secret`.

### Segurança

- Use sempre HTTPS
- Não inclua `client_secret` em código frontend, repositórios públicos ou logs
- Rotacione o `client_secret` se suspeitar de exposição, geração de novas credenciais acontece no painel

---

## Rapid chamando sua aplicação (webhook)

No formato `v2` a Rapid assina cada webhook com **HMAC-SHA256** e envia a assinatura e o timestamp nos headers:

```
X-Webhook-Signature: sha256=<hmac_hex>
X-Webhook-Timestamp: 1790000000
```

O conteúdo assinado **não é só o corpo**: é `${X-Webhook-Timestamp}.${corpo_bruto}`, o timestamp, um ponto e o corpo exatamente como chegou. Calcular o HMAC só sobre o corpo dá um valor diferente e toda requisição é recusada. O timestamp entra na conta para impedir que um POST capturado seja reenviado depois (rejeite os que estiverem fora de uma janela de 5 minutos).

A chave de assinatura (`secret`) é **gerada pela Rapid** quando você cadastra o webhook e aparece **uma única vez** no painel, em `Configurações > Webhook`. Não é você quem escolhe e não há como consultá-la depois: se perder, peça uma nova ao suporte.

O passo a passo de validação, com exemplos em Node.js e Python, está em [Autenticação do webhook](https://doc.rapidchargeback.com/canais/webhook/autenticacao/).

### Formato `legacy`

Contas migradas do sistema anterior recebem os webhooks no formato `legacy`, que **não é assinado**. Nele a autenticação são os headers que o sistema antigo já mandava:

```
clientid: <client_id>
clientkey: <client_secret>
```

Esses dois headers existem **só no `legacy`**. No `v2` eles não são enviados: `clientkey` é a sua credencial de acesso à API, e mandá-la em toda entrega a exporia no seu endpoint e nos seus logs sem necessidade, já que no `v2` quem autentica é a assinatura. Para saber em qual formato está a sua conta, veja [Payload](https://doc.rapidchargeback.com/canais/webhook/payload/#formato-legacy).
