# Use a integração Secure Token no Marketplace

A Azion **Secure Token** é uma integração *serverless* disponível no **Marketplace** da Azion.

Com a ajuda desta integração, você pode criar URLs por tempo limitado baseadas em token. A criação e validação de assinaturas para cookies, cabeçalhos de autenticação e outras medidas de segurança podem ser feitas usando esses tokens, que podem ser alterados de várias maneiras. Utilizando tanto o HLS quanto o Progressive Download, a integração é frequentemente usada para proteger ativos de vídeo, incluindo aqueles usados para transmissão ao vivo e conteúdo sob demanda.

---

## Obtenha a integração

Para usar a integração **Secure Token** fornecida pelo **Marketplace** da Azion, você deverá seguir os seguintes passos:

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

Aparecerá 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.
:::

---

## Gere o token

Para usar esta integração, você terá que gerar um token. Para fazer isso, siga estes passos:

1. Vá para o [repositório Secure Token da Azion no GitHub](https://github.com/aziontech/azion_secure_token).
   - Nele você encontrará uma breve explicação sobre como o secure token é gerado e como usá-lo.
2. No repositório, você encontrará dois scripts de exemplo para gerar os tokens, um em `Python` e outro em `PHP`. Você pode executá-los localmente e gerar o token ou pode gerar esses tokens em sua própria plataforma com seu próprio código.
3. Salve o token gerado, qualquer que seja a maneira como você utilizou para gerá-lo.

Usando o script Python como exemplo, você terá o seguinte código-fonte:

```python
#!/usr/bin/env python

import base64
import hashlib

secret = 'mysecret'
uri = '/my/uri'
expire = '1470055000'

md5 = hashlib.md5()
md5.update(secret + uri + expire)
token = base64.b64encode(md5.digest()).replace('=','').replace('+','-').replace('/','_')

print 'http://www.example.org%s?st=%s&e=%s' % (uri, token, expire)
```

Where:
- `secret`: uma string de sua escolha que será usada para gerar o token.
- `uri`: a URI que será usada com o token.
- `expire`: o tempo de expiração do token.

---

## Configure a integração

### Configure um firewall

Para iniciar este processo, siga os passos:

1. No **Products menu**, selecione **Firewall** na seção **Secure**.
2. Clique no botão **+ Firewall**.
3. Dê um nome fácil de lembrar ao seu firewall.
4. Habilite o switch para **Functions**.
5. Clique no botão **Save**.

Pronto. Agora você instanciou o firewall para sua função.

### Instancie a integração

Para instanciar a integração **Secure Token**, 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 **Secure Token**.
  - Esta ação irá carregar a aba **Arguments**.

A aba **Arguments** carregará um arquivo JSON que se parece com o mostrado abaixo:

```json
{
    "secure_token_secret": "thatisthesecret"
}
```

Onde o `secure_token_secret` será a string secreta que você passou no código ao gerar o token na etapa anterior.

5. Clique no botão **Save** e pronto. Sua integração **Secure Token** foi instanciada.

### Configure o Rules Engine

Para concluir, você precisa configurar o [Rules Engine](/pt-br/documentacao/produtos/build/applications/rules-engine/) para determinar o *behavior* e os *criteria* para executar a função.

Ainda na página **Firewall**:

1. Selecione a aba **Rules Engine**.
2. Clique no botão **+ Rule Engine**.
3. Dê um nome fácil de lembrar à sua nova regra.
4. Selecione um *criteria* (critério) para executar a integração.
  - Exemplo: if `Host` *matches* `yourdomain.com`.
5. Abaixo, selecione um *behavior* (comportamento) para os *criteria* (critérios). Neste caso, será **Run Function**.
   - Selecione a função adequada de acordo com o nome que você deu na etapa de instanciação.
6. Clique no botão **Save**.

Agora, no Console, você deve configurar seu domínio para que ele seja protegido pelo seu firewall.

7. No **Products menu**, selecione **Workloads**.
8. Clique no domínio que você deseja proteger com sua função **Secure Token**.
9. Na seção **Settings**, clique no seletor de `Firewall` e escolha o firewall que você acabou de criar.
10. Clique no botão **Save**.

:::note
A function sendo executada no edge roda duas verificações em tokens: se o tempo atual é maior que o tempo de expiração especificado no token e se a assinatura corresponde à assinatura do token. Se a assinatura for inválida, o sistema retornará um **erro 403** e, se o tempo de expiração for excedido, retornará um **erro 410**. Usuários mal-intencionados não podem alterar o tempo de expiração do token sem quebrar a assinatura.
:::

Pronto. Agora, a integração **Secure Token** está em execução para cada requisição feita ao domínio que você indicou.

:::tip
Você pode encontrar alguns exemplos de trechos de código no [repositório público do GitHub da Azion](https://github.com/aziontech/azion_secure_token) para a integração Secure Token.
:::

---