# Instale a integração Axur Leakstream

**Axur Leakstream** é uma integração de Firewall que monitora atividades na internet em busca de credenciais vazadas. Ela ajuda seu e-commerce a evitar ataques de checker e a proteger as credenciais dos seus usuários, verificando se uma determinada combinação de nome de usuário e senha foi exposta em alguma violação de dados conhecida.

Quando uma requisição de login chega ao edge, a função extrai o nome de usuário e a senha do corpo da requisição, consulta a API do Axur Leakstream e adiciona cabeçalhos personalizados à requisição. O **Rules Engine** pode então usar esses cabeçalhos para executar qualquer ação necessária — como bloquear a requisição, redirecionar o usuário ou acionar um fluxo de verificação secundário.

---

## Pré-requisitos

Para começar a usar esta integração, você precisa:

- Criar uma [conta Axur](https://www.axur.com/pt-br/) e assinar um plano Leakstream compatível com o tamanho da sua base de clientes.
- Obter um **Token API** da Axur após a habilitação da sua conta.

---

## Obtenha a integração

Para instalar esta integração:

1. Acesse [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Marketplace**.
2. Na página inicial do Marketplace, selecione o cartão da **Leakstream**.
3. Na página de integração, clique no botão **Install**.

Você verá uma mensagem indicando que sua integração foi instalada com sucesso.

:::tip
Você pode procurar qualquer integração navegando pelos cards, usando os filtros ou digitando uma palavra-chave na barra de busca.
:::

---

## Configure a integração

Depois de instalar a integração **Axur Leakstream**, conclua as etapas abaixo para configurá-la.

### Configure um Firewall

Siga estes passos:

1. No canto superior esquerdo, abra o **Products menu** e selecione **Firewall** na seção **Secure**.
2. Clique no botão **+ Firewall**.
3. Dê um nome fácil de lembrar ao seu firewall.
4. Ative a opção **Functions** na seção **Modules**.
   - Esta ação dá acesso a functions no firewall.
5. Clique no botão **Save**.

Pronto. Agora você instanciou o firewall para sua função e tem acesso a functions em seu firewall.

:::caution[Atenção]
Se um produto ou módulo estiver ativado, pode gerar custos relacionados ao uso. Consulte a [página de preços](/pt-br/documentacao/produtos/precos/) para obter mais informações.
:::

### Configure uma função no Firewall

Enquanto ainda estiver na página do **Firewall**:

1. Selecione a aba **Functions Instances**.
2. Clique no botão **+ Function Instance**.
3. Dê um nome fácil de lembrar à sua instância.
4. No menu suspenso, selecione a função **Axur Leakstream**.
5. Na caixa **Arguments**, passe suas variáveis:

```json
{
  "api_key": "YourAxurAPIKey",
  "username_field": "user",
  "password_field": "password",
  "password_hash_type": "sha256",
  "execute_hashing": false,
  "leakstream_timeout": 60000
}
```

Onde:

| Variável | Obrigatório | Descrição |
| ---- | ---- | ---- |
| `api_key` | Sim | O Token API da sua conta Axur. Obrigatório, a menos que a variável de ambiente `AXUR_API_V1_LEAKSTREAM_API_KEY` esteja definida |
| `username_field` | Sim | O nome do campo no corpo da requisição que contém o nome de usuário. Obrigatório, a menos que a variável de ambiente `AXUR_API_V1_LEAKSTREAM_USERNAME_FIELD` esteja definida |
| `password_field` | Não | O nome do campo no corpo da requisição que contém a senha |
| `password_hash_type` | Não | O algoritmo de hash usado para a senha. Valores aceitos: `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512` |
| `execute_hashing` | Não | Quando definido como `true`, a função aplica hash SHA-256 à senha automaticamente antes de enviá-la à API da Axur. Recomendado quando o frontend não aplica hash à senha |
| `leakstream_timeout` | Não | Timeout de conexão (em milissegundos) para requisições à API da Axur. O valor padrão é `60000` (60 segundos) |

:::note
A função suporta os seguintes tipos de conteúdo nas requisições: `application/json`, `application/x-www-form-urlencoded` e `multipart/form-data`. Requisições com outros tipos de conteúdo são repassadas sem chamar a API da Axur.
:::

6. Clique no botão **Save**.

### Configure uma regra no Rules Engine

A integração Leakstream usa um **padrão de duas regras** no Rules Engine:

- **Regra 1** — aciona a função Leakstream no endpoint alvo (por exemplo, um formulário de login ou criação de conta).
- **Regra 2** — aciona uma segunda função de resposta personalizada no mesmo endpoint. Essa função lê os cabeçalhos personalizados definidos pelo Leakstream e decide se deve bloquear a requisição ou deixá-la passar.

Os critérios do Rules Engine do Firewall não suportam correspondência em cabeçalhos de requisição personalizados. Por isso, a lógica de bloqueio deve estar dentro de uma segunda função que lê o cabeçalho `axur-leakstream-leaked` do objeto da requisição e retorna a resposta adequada.

A tabela abaixo descreve os cabeçalhos que a função Leakstream adiciona ao objeto da requisição:

| Cabeçalho | Valor | Descrição |
| ---- | ---- | ---- |
| `axur-leakstream-leaked` | `true` | A combinação de nome de usuário e senha foi encontrada em uma violação de dados |
| `axur-leakstream-username-leaked` | `true` | O nome de usuário isolado foi encontrado em uma violação de dados |
| `axur-leakstream-missing-username` | `true` | O campo de nome de usuário não foi encontrado no corpo da requisição |
| `axur-leakstream-error` | `timeout`, `invalid-content-type` ou um código de status HTTP | Ocorreu um erro ao chamar a API da Axur |

#### Regra 1 — Execute a função Leakstream

Ainda na página do **Firewall**:

1. Selecione a aba **Rules Engine**.
2. Clique no botão **+ Rule Engine**.
3. Dê um nome fácil de lembrar à regra (por exemplo, `Executar Leakstream`).
4. Selecione um *criteria* (critério) para restringir quais requisições acionam a verificação do Leakstream.
   - Exemplo: if `Request Method` *is equal to* `POST` **and** `Request URI` *matches* `/login`.
   - Isso evita executar a verificação em todas as requisições e a limita a endpoints de login ou criação de conta.
5. Abaixo, selecione **Run Function** como *behavior* e escolha a instância da função Leakstream criada anteriormente.
6. Clique no botão **Save**.

#### Regra 2 — Aja sobre o resultado

Antes de criar esta regra, você precisa de uma segunda instância de função que leia o cabeçalho `axur-leakstream-leaked` e retorne uma resposta personalizada. Por exemplo, a função abaixo retorna uma página HTML de aviso quando o cabeçalho é `true`:

```javascript
async function handleRequest(request) {
  const leaked = request.headers.get('axur-leakstream-leaked');

  if (leaked === 'true') {
    const html = `<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <title>Aviso!</title>
</head>
<body>
  <h1>Aviso!</h1>
  <p>A combinação de usuário e senha fornecida foi encontrada em um vazamento de dados. Você não pode utilizá-la.</p>
</body>
</html>`;
    return new Response(html, {
      status: 403,
      headers: { 'content-type': 'text/html;charset=UTF-8' },
    });
  }

  return fetch(request);
}

addEventListener('fetch', event => {
  return event.respondWith(handleRequest(event.request));
});
```

Após criar e instanciar a função de resposta, adicione a segunda regra:

1. Clique novamente no botão **+ Rule Engine**.
2. Dê um nome fácil de lembrar à regra (por exemplo, `Bloquear credenciais vazadas`).
3. Defina o *criteria* para corresponder ao **mesmo endpoint** da Regra 1:
   - Exemplo: if `Request Method` *is equal to* `POST` **and** `Request URI` *matches* `/login`.
4. Selecione **Run Function** como *behavior* e escolha a instância da função de resposta.
5. Clique no botão **Save**.

:::note
O Rules Engine do Firewall processa as regras em ordem. A Regra 1 (Leakstream) deve ter um **número de ordem menor** do que a Regra 2 (função de resposta) para que os cabeçalhos sejam definidos antes de a segunda função lê-los.
:::

:::tip
Sua função de resposta também pode ler o cabeçalho `axur-leakstream-username-leaked` para solicitar que os usuários alterem sua senha, mesmo quando a combinação exata de nome de usuário e senha não foi confirmada como vazada.
:::

### Associe o Firewall ao seu domínio

No Console, você deve agora configurar seu domínio para que ele seja protegido pelo seu Firewall.

1. No **Products menu**, selecione **Domains**.
2. Clique no domínio que você deseja proteger com sua função **Leakstream**.
3. Na seção **Settings**, clique no seletor de `Firewall` e escolha o Firewall que você acabou de criar.
4. Clique no botão **Save**.

Pronto. Agora a integração **Axur Leakstream** está em execução e protegendo as credenciais dos seus usuários no edge.

---

## Documentação relacionada

- [Referência de Integrações da Azion](/pt-br/documentacao/produtos/marketplace/integracoes/)
- [Como instalar uma integração](/pt-br/documentacao/produtos/marketplace/instalar-uma-integracao/)
- [Como atualizar uma integração](/pt-br/documentacao/produtos/marketplace/atualizar-uma-integracao/)