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.
Chave | Descriçãoo | Tipo |
---|---|---|
ConnectionStrings/core | String de conexão com o banco de dados | String |
AesKey | Chave de criptografia de variáveis de uso interno | String (16 caracteres) |
AesIV | Inicializador de criptografia de variáveis de uso interno | String (32 caracteres) |
Updated over 1 year ago