# Contas de serviço

## Introdução

Contas de serviço são uma forma simples de **armazenar credenciais e autorizações de acesso** à serviços que serão utilizados dentro do seu Workspace. As contas criadas podem ser selecionadas dentro de conectores específicos na biblioteca de conectores.

## Gerencie as suas contas de serviço

Para adicionar uma conta de serviço acesse o menu lateral do Workspace Floui, e na seção **Configurações** clique no menu **Contas de Serviço**. Por esta tela é possível visualizar todas as contas de serviço criadas, criar novas contas, editar contas existentes ou remove-las.

<figure><img src="https://215079342-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F226k0cnPTn1PWu9xHcK8%2Fuploads%2FXvL9jx44mVtV1qEDuGBL%2Fimage.png?alt=media&#x26;token=3cf1d465-3b6a-453a-ba99-8dc08c2d36f9" alt=""><figcaption><p>Gerenciamento de Contas de Serviço.</p></figcaption></figure>

## Criação de contas de serviço

Para criar uma nova **Conta de Serviço**, acesse a tela de listagem de contas e clique no botão **Criar Conta**, localizado no canto superior direito. Defina um **nome** para a conta, que servirá como identificador visual dentro do Workspace Floui, e selecione o **tipo de autenticação** desejado. Dependendo da opção escolhida, podem ser necessários campos adicionais de configuração. Após preencher as informações, clique em **Salvar Conta de Serviço** para concluir a criação.

<figure><img src="https://215079342-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F226k0cnPTn1PWu9xHcK8%2Fuploads%2FD0jpvgACfjRISfR0EyVD%2Fimage.png?alt=media&#x26;token=4172056d-734d-458b-a7a9-9a8a9dd65d6e" alt=""><figcaption><p>Criação de conta de serviço</p></figcaption></figure>

Segue os tipos de contas de serviço disponíveis e uma descrição de seus campos de configuração:

### 1. Bearer Token

<table data-column-title-hidden data-view="cards"><thead><tr><th>Campo</th><th>Descrição</th></tr></thead><tbody><tr><td><strong>URL do serviço</strong></td><td>Define a URL de acesso para requisições da API. Obrigatório para alguns conectores, como REST API e Magento/Adobe Commerce.</td></tr><tr><td><strong>Token de autenticação</strong></td><td>Chave digital que permite ao usuário acessar determinados recursos ou serviços em um sistema.</td></tr></tbody></table>

### 2. HTTP Basic

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>URL do serviço</strong></td><td>O endereço do serviço web que será acessado.</td></tr><tr><td><strong>Usuário e senha</strong></td><td>Usuário de autenticação do serviço.</td></tr><tr><td><strong>Senha</strong></td><td>Senha de autenticação do serviço.</td></tr></tbody></table>

### 3. JWT - JSON Web Token

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>URL do serviço</strong></td><td>O endereço do serviço web que será acessado.</td></tr><tr><td><strong>URL de autenticação</strong></td><td>O endereço onde é enviado as credenciais (como nome de usuário e senha) para obter um token JWT.</td></tr><tr><td><strong>TTL (Time To Live)</strong></td><td>É o tempo de vida de um token JWT. Quando expira, é necessário obter um novo token.</td></tr><tr><td><strong>Usuário</strong></td><td>Usuário para obter um token JWT, podendo ser no formato de usuário real ou Client ID.</td></tr><tr><td><strong>Senha</strong></td><td>Usuário para obter uma senha JWT, podendo ser no formato de usuário real ou Secret ID.</td></tr></tbody></table>

{% hint style="info" %}
Ficou alguma dúvida? Acesse a documentação oficial em <https://jwt.io/>
{% endhint %}

### 4. SMTP Account

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Host SMTP</strong></td><td>O endereço do servidor SMTP usado para enviar e-mails. Por exemplo, se estiver usando G-mail, o host SMTP será <strong>smtp.gmail.com</strong>.</td></tr><tr><td><strong>Porta de acesso</strong></td><td>Esta é a porta através da qual o servidor SMTP se comunicará. As portas mais comuns são 25, 465 e 587.</td></tr><tr><td><strong>Usuário de autenticação</strong></td><td>Nome de usuário ou e-mail usado para autenticação no servidor SMTP.</td></tr><tr><td><strong>Senha</strong></td><td>Senha do usuário para autenticação (ou App Password em serviços que não aceitam senhas diretas, como o Gmail).</td></tr></tbody></table>

### 5. Database Connection URI

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>URI de conexão</strong></td><td>URI de conexão é usada para especificar o local do banco de dados e como se conectar a ele.</td></tr></tbody></table>

#### Modelo de Data URI

O modelo abaixo é um exemplo expressando a sintaxe usada na criação de URI.&#x20;

```uri
mysql://usuario:senha@localhost:3306/nome_do_banco_de_dados
```

* **Protocolo:** `mysql://`
* **Usuário e Senha:** `usuario:senha@`
* **Endereço do Servidor:** `localhost:`
* **Porta:** `3306/`
* **Nome do Banco de Dados:** `nome_do_banco_de_dados`

### 6. OAuth 2.0

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Serviço</strong></td><td>Permite escolher um serviço customizado, ou Bling ERP.</td></tr><tr><td><strong>URL do Serviço</strong></td><td>Endpoint da API que será acessado durante a autenticação.</td></tr><tr><td><strong>URL de autorização</strong></td><td>URL onde ocorre o redirecionamento autenticação do usuário. No caso do Bling ERP será informada, automaticamente, a URL de autorização a ser usada na plataforma.</td></tr><tr><td><strong>Client ID</strong></td><td>Identificação da aplicação registrada no provedor OAuth2.</td></tr><tr><td><strong>Client Secret</strong></td><td>Chave secreta usada para validar a autenticação junto ao provedor OAuth2.</td></tr></tbody></table>

### 7. Contas de terceiros (Google, Slack, Trello)

As contas de terceiros solicitam autorização das contas de serviços que serão utilizadas para gerenciar os dados atrelados ao usuário. Após criar a conta de serviço para uma destas contas, um botão **Autorizar conta** será exibido conforme a imagem abaixo.&#x20;

Ao clicar no botão será redirecionado para o serviço externo onde será feita a autorização. Ao autorizar com sucesso será retornado ao Workspace Floui.

<figure><img src="https://215079342-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F226k0cnPTn1PWu9xHcK8%2Fuploads%2F20zSY0WK0lv8O4VbDBzJ%2Fimage.png?alt=media&#x26;token=875968be-ebeb-4e57-9f4e-392dbd209f0c" alt=""><figcaption><p>Autorização de contas de terceiros (Google, Slack, Trello)</p></figcaption></figure>

Permitir a autorização em uma conta significa dar permissão ao Floui para manipular informações da sua conta em baixo nível. Os tipos de dados acessados poderão variar de acordo com o conector a ser utilizado.

Quando você permite a autorização, está basicamente dizendo ao serviço que confia em nosso produto e que ele pode ter acesso a certas partes da sua conta. No entanto, é importante lembrar que você deve apenas permitir a autorização para aplicativos e serviços confiáveis.

1. Google
2. Slack
3. Trello

### 8. Conta de Serviço Google (arquivo JSON)

O Google disponibiliza uma autenticação própria para conexão com suas APIs (como Google Cloud, Google Analytics, Google Drive, etc.), através de um arquivo JSON. O ambiente Floui utiliza estas credenciais para realizar a coleta de dados dos serviços Google.

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Conteúdo do arquivo JSON</strong></td><td>Campo para a inserção do conteúdo do arquivo JSON para autenticação com Conta de Serviço Google. O arquivo JSON pode ser obtido com uma conta <a href="https://cloud.google.com/cloud-console">Google Cloud</a> válida em seu painel administrativo.</td></tr></tbody></table>

Exemplo da estrutura do arquivo JSON de autenticação:

```json
{
  "type": "service_account",
  "project_id": "nome-do-projeto",
  "private_key_id": "1234567890abcdef1234567890abcdef12345678",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkq...\n-----END PRIVATE KEY-----\n",
  "client_email": "nome-da-conta@nome-do-projeto.iam.gserviceaccount.com",
  "client_id": "123456789012345678901",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/nome-da-conta%40nome-do-projeto.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}
```

### 9. AWS (Access Key)

A AWS (Amazon Web Services) usa um sistema de chaves para permitir o acesso aos seus serviços. As duas partes principais desse sistema são a **Access Key ID** e a **Secret Access Key**.

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Access Key ID</strong></td><td>É uma sequência de caracteres alfanuméricos que é usada em conjunto com a Secret Access Key para acessar os serviços da AWS. Pode ser comparada a um nome de usuário, pois identifica a conta AWS.</td></tr><tr><td><strong>Secret Access Key</strong></td><td>É uma chave mais longa e complexa que é usada junto com a Access Key ID para acessar os serviços da AWS. Ela funciona como uma senha e deve ser mantida em segredo para proteger sua conta AWS.</td></tr></tbody></table>

### 10. Floui Token

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Token (gerado automaticamente)</strong></td><td>Para a opção Floui Token será gerado automaticamente um token de autenticação remota para serviços externos especiais conectados ao Workspace, como por exemplo o módulo de integração Floui Connector para Adobe Commerce Magento 2.</td></tr></tbody></table>

### 11. Sankhya ID (Parceiro Sankhya)

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>AppKey de Parceiro Sankhya</strong></td><td>Chave de autenticação fornecida pelo Sankhya para parceiros de integração.<br>Identifica a aplicação e garante que apenas sistemas autorizados possam acessar a API.<br>A chave pode ser obtida na Área do Desenvolvedor Sankhya.</td></tr><tr><td><strong>Token</strong></td><td>O Token de Acesso é gerado para autorizar a comunicação entre sua aplicação e a API do Sankhya.<br>Geralmente, é obtido a partir de uma requisição de autenticação.</td></tr><tr><td><strong>Usuário</strong></td><td>Nome do usuário autorizado a acessar os serviços da API.<br>Deve estar cadastrado no Sankhya OM com permissões adequadas.</td></tr><tr><td><strong>Senha</strong></td><td>Senha do usuário informado no campo anterior.</td></tr></tbody></table>

### 12. Omie ERP

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>App Key</strong></td><td>Chave única de identificação da aplicação integrada ao Omie.<br>Funciona como um ID público que informa ao Omie qual sistema está tentando se conectar.</td></tr><tr><td><strong>App Secret</strong></td><td>Chave secreta utilizada para autenticar e validar as requisições.<br>Funciona como uma senha da aplicação, garantindo que apenas sistemas autorizados possam interagir com a API do Omie.</td></tr></tbody></table>

### 13. FTP Server

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Tipo de conexão</strong></td><td>Define entre as opções <strong>FTP</strong> (File Transfer Protocol) ou <strong>FTP Over TLS</strong> (Transport Layer Security).</td></tr><tr><td><strong>Endereço do host</strong></td><td>O <strong>endereço do host</strong> do serviço FTP é basicamente o local na internet onde o servidor FTP está hospedado.</td></tr><tr><td><strong>Porta de acesso</strong></td><td>Número da porta para comunicação entre cliente e servidor FTP/FTPS.</td></tr><tr><td><strong>Usuário de autenticação</strong></td><td>Usuário de autenticação do serviço.</td></tr><tr><td><strong>Senha</strong></td><td>Senha de autenticação do serviço.</td></tr></tbody></table>

### 14. GPG Auth

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>URL do serviço</strong></td><td>Endereço web (URL) do serviço que será integrado.</td></tr><tr><td><strong>Public key</strong></td><td>Chave pública usada para criptografia. Normalmente, o sistema que envia mensagens criptografadas utilizará essa chave para garantir que apenas o destinatário correto possa descriptografar os dados. Certifique-se de que a chave foi colada assim como está no sistema de onde foi originada.</td></tr><tr><td><strong>Private key</strong></td><td>A chave privada correspondente à chave pública. Certifique-se de que a chave foi colada assim como está no sistema de onde foi originada.</td></tr><tr><td><strong>Passphrase</strong></td><td>Senha usada para proteger a chave privada. Muitas implementações de PGP exigem uma senha para acessar a chave privada e realizar a descriptografia.</td></tr><tr><td><strong>Fingerprint</strong></td><td>Trata-se de um identificador único gerado a partir da chave pública, útil para verificar se a chave correta está sendo utilizada.</td></tr><tr><td><strong>Verificar assinatura do servidor?</strong></td><td>Indica se a assinatura PGP do servidor será validada antes de estabelecer a comunicação. Se ativado, garante que as mensagens recebidas são de um remetente confiável e não foram alteradas.</td></tr></tbody></table>

## Utilização de contas de serviço dinâmicas em conectores

Além da seleção comum das contas de serviço nos conectores suportados, alguns conectores possuem a opção de **Conta de Serviço Personalizada**. Ao selecionar esta opção um novo campo **ID da Conta de Serviço** será disponibilizada.

<figure><img src="https://215079342-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F226k0cnPTn1PWu9xHcK8%2Fuploads%2Fsg4nkwpQtK4ydQd03MHU%2Fimage.png?alt=media&#x26;token=44791972-ebe1-4ffc-b364-3ff99d1e21b8" alt=""><figcaption><p>Seleção de conta de serviço personalizada/dinâmica</p></figcaption></figure>

O identificador da conta de serviço pode ser obtido através da listagem de contas de serviço no Workspace Floui, pela coluna ID.

<figure><img src="https://215079342-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F226k0cnPTn1PWu9xHcK8%2Fuploads%2F25DDVeqQtQrNuTvWnI1I%2Fimage.png?alt=media&#x26;token=1992a299-771d-4396-b598-cbb969000367" alt=""><figcaption><p>Listagem de contas de serviço</p></figcaption></figure>

Esta opção pode ser usada quando é necessário realizar a conexão com várias contas de serviço em apenas uma execução de fluxo, além de contribuir para fluxos mais enxutos. Exemplo de uso:

Suponhamos que um fluxo é responsável por buscar pedidos gerados em diferentes lojas (neste caso, diferentes contas de serviço, uma representa cada loja). No modelo padrão seria necessário vários conectores e ramificações repetidas, uma apontando para cada loja ou até mesmo diferentes fluxos para cada loja.

Com a implementação das contas de serviço personalizadas, podemos adicionar o ID de cada conta de serviço (loja) em uma lista, e pelo conector Loop/ForEach, iterar sobre cada uma dessas lojas capturando os pedidos gerados. No fim do fluxo será logado a lista de pedidos de cada loja.

<figure><img src="https://215079342-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F226k0cnPTn1PWu9xHcK8%2Fuploads%2FoJDYdfB9MkZZiqwMlRWT%2Fimage.png?alt=media&#x26;token=bc0c500a-c509-41db-b8a2-ed37ebc8266d" alt=""><figcaption><p>Exemplo de utilização de contas de serviço dinâmicas</p></figcaption></figure>
