Webhook API

Introdução

Nesta seção faremos uso conceitos abordados na documentação de arquitetura do projeto da Webhook API.

Gerando as credenciais para autenticação

É recomendado que as credenciais sejam geradas de forma aleatória.

Utilize o link abaixo para Gerar os valores criptografados em SHA512.
https://emn178.github.io/online-tools/sha512.html

UserName: CredentialApiName;
Password sem criptografia(string aleatória + salt aleatório): CredentialApiPassword237cd775-c1e0-4aa6-8604-a6dcb92b860f
Password criptografado em SHA512: ea733108f9ea7a8baa5a3f48b57aee51964eb888d14ff627c6946b00c265dd2001b3b7be83fa338059adec1a11362fa3a700a6d3ae59401c17199ea1e1c9eaa0

Observação: os valores utilizados nos exemplos são ilustrativos e não devem ser utilizados em um cenário real.

Os dados no banco de dados deverão ser preenchidos da seguinte forma:

WebhookAuthenticationId: Identificador da entidade;
CompanyId: Identificador da Company (cada company pode possuir uma credencial para recebimento de hooks);
UserName: Nome do usuário da credencial;
Password: Valor do secret da credencial;
Salt: Salt usado para criptografar o secret;
CreationDate: Data atual;
UpdateDate: Data atual;
DeletionDate: Nulo;
CreationUserId: Identificador de um usuário válido;
UpdateUserId: Identificador de um usuário válido;

Cadastrando WebhookAuthentication

No banco de dados faça um insert na tabela WebhookAuthentication informando as credenciais para autenticação da aplicação quedisparará os hooks para a Webhook API. O campo "Password" deve ser salvo criptografado, assim como o "salt" utilizado no processo. Segue exemplo de insert.

INSERT INTO public."WebhookAuthentication"(
	  "CompanyId", "Username", "Password", "Salt", 
    "CreationDate", "UpdateDate", "DeletionDate", "CreationUserId", "UpdateUserId")
	VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);

Configurando Webhook API

Após a publicação dos pacotes da API no servidor que hospedará a aplicação, podemos configurar o "appsettings" do projeto. Vale ressaltar que existem dois arquivos, “appsettings.Development.json” e “appsettings.json”. Ambos estão localizados na raíz do projeto da Webhook API. O primeiro arquivo é utilizado quando a API é executada localmente, já o segundo quando publicada. Veja o exemplo a seguir.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "Settings": {
    "ConnectionStrings": {
      "core": "Server=your-postgres-server; Port=your-postgres-port; User Id=your-postgres-user; Password=your-postgres-password; Database=your-postgres-database;"
    },
    "AesKey": "your-aes-key",
    "AesIV": "your-aes-IV"
  }
}

Confira uma breve descrição das chaves contidas no arquivo de configuração.

ChaveDescriçãooTipo
ConnectionStrings/coreString de conexão com o banco de dadosString
AesKeyChave de criptografia de variáveis de uso internoString (16 caracteres)
AesIVInicializador de criptografia de variáveis de uso internoString (32 caracteres)