DataC.CoreApi
10.0.1.7
dotnet add package DataC.CoreApi --version 10.0.1.7
NuGet\Install-Package DataC.CoreApi -Version 10.0.1.7
<PackageReference Include="DataC.CoreApi" Version="10.0.1.7" />
<PackageVersion Include="DataC.CoreApi" Version="10.0.1.7" />
<PackageReference Include="DataC.CoreApi" />
paket add DataC.CoreApi --version 10.0.1.7
#r "nuget: DataC.CoreApi, 10.0.1.7"
#:package DataC.CoreApi@10.0.1.7
#addin nuget:?package=DataC.CoreApi&version=10.0.1.7
#tool nuget:?package=DataC.CoreApi&version=10.0.1.7
DataC.CoreApi
Biblioteca base compartilhada por todas as APIs da Data C. Concentra a infraestrutura comum (autenticação/permissões, acesso a dados, HTTP clients, logging, mensageria, helpers) para que cada API implemente apenas sua regra de negócio específica.
Instalação
dotnet add package DataC.CoreApi
Registro de dependências
No Program.cs/Startup.cs da API consumidora:
builder.Services.ResolveCoreDependencies(MIOAppName: "nome-da-app-no-mio-auth");
builder.Services.AddEntityLog(SistemaEnum.MeuSistema, connectionStringRabbitMQ);
builder.Services.AddContextMonitorService(SistemaEnum.MeuSistema);
builder.Services.AddMessageBus(connectionStringRabbitMQ);
builder.Services.AddKissLogService();
Principais módulos
- Identidade — validação de JWT (
JwtConfig), autorização por claim (CustomAuthorize) e configurações do MIO-Auth. - Identidade/AutenticacaoInterna — autenticação entre serviços Data C:
TokenInterno(emite/valida) e[AutorizacaoInterna](exige o token na ação ou no controller). Ver seção abaixo. - Usuario —
IAspNetUser/AspNetUser, abstração para obter usuário, empresa e token da requisição atual. - Services/PermissaoUsuarioServices — permissões granulares por recurso/escopo, com cache em memória.
- Services/PostgresServices —
ContextBase, base deDbContextcom log automático de alterações (auditoria) e suporte a múltiplos bancos por tenant. - Services/HttpClientServices — clients tipados (
IHttpClientFactory) para integrações (MIO-Auth, MIO-Mailer, ViaCEP, Receita/AWS). - Services/EntityLogServices e Services/IntegrationServices — auditoria de entidades e replicação de eventos via mensageria (RabbitMQ).
- Repositories / Services/ServicesBase — bases genéricas de CRUD e paginação sobre Entity Framework Core.
- Helpers — utilitários diversos (arquivos texto de largura fixa, Excel, PDF, ZIP, máscaras, tokens, certificados).
- Notificacoes — padrão de notificação de erros de validação/negócio (Notification Pattern).
- Configurations — Swagger e KissLog.
Autenticação entre serviços (Identidade/AutenticacaoInterna)
Endpoint que só deve ser chamado por outro serviço Data C — nunca pelo usuário final — é protegido
por um JWT HS256 curto, assinado com um segredo compartilhado e transportado no header
X-DataC-Interno. Não em Authorization: o token do usuário continua sendo o único que chega
ao esquema padrão de autenticação, então nada aqui atravessa o AlteraConexaoMiddleware nem a
identidade multi-tenant.
O token prova apenas "sou um serviço Data C". Não carrega empresa, licença nem usuário — endpoint que precise de tenant continua recebendo a licença explicitamente no próprio contrato.
Configuração — a mesma chave, com o mesmo valor, em todos os serviços que conversam entre si:
{ "InternalSecret": "<32+ bytes; fora do appsettings versionado em produção>" }
No serviço que recebe — nada a registrar, o filtro se resolve sozinho:
[HttpGet("ConsultarInterno")]
[AutorizacaoInterna]
public async Task<ActionResult> ConsultarInterno(string cnpjCPF) { ... }
Sem o header, com token inválido ou sem o InternalSecret configurado, responde 401 com o
motivo em InternalErrors. Falha fechado de propósito: serviço mal configurado recusa, não libera.
No serviço que chama:
requisicao.Headers.Add(TokenInterno.Header, TokenInterno.Emitir(_configuration[TokenInterno.ChaveConfiguracao]));
O que é longevo aqui é o segredo, não o token: cada chamada emite o seu, válido por 5 minutos. Rotacionar é trocar a chave em todos os serviços ao mesmo tempo.
Cuidado com o segredo em cliente instalado. O segredo é único para toda a comunicação interna, então num executável na máquina do cliente ele é extraível e o vazamento alcança todos os serviços, não só o que ele chama. Onde isso for inevitável, as duas saídas são segredo próprio por serviço (limita o alcance) e credencial por instalação (dá o que revogar).
[AutorizacaoInterna] não substitui [Authorize] — responde outra pergunta. [Authorize]
pergunta quem é o usuário; este pergunta isto veio de dentro. Endpoint interno normalmente leva
[AllowAnonymous] + [AutorizacaoInterna]: o AllowAnonymous desvia da autenticação do usuário e
o filtro entra no lugar dela.
Itens obsoletos (mantidos por compatibilidade)
Alguns membros estão marcados com [Obsolete] por apresentarem falhas de design conhecidas
(perda de transação, mascaramento de exceções, ausência de validação de assinatura JWT). Evite
usá-los em código novo:
RepositoryCRUDBase<,>/ServiceBase<,>— prefira uma implementação própria de persistência.MIOTokenHelper— não valida assinatura do JWT.MIOEmailHelper/Models.MIOEmailModels.MIOConfigs— substituídos porMIOMailer2Service.
Suporte
Repositório: https://gitlab.com/datac-stella/datac-coreapi
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- DataC.CommonStandard (>= 3.0.3)
- DataC.MessageBus (>= 8.0.0.4)
- EPPlus (>= 8.6.0)
- FluentValidation (>= 12.1.1)
- KissLog.AspNetCore (>= 5.3.2)
- MediatR (>= 12.4.1)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.9)
- Microsoft.Extensions.Caching.Memory (>= 10.0.9)
- Microsoft.Extensions.Http.Polly (>= 10.0.9)
- NetDevPack (>= 8.0.2)
- NetDevPack.Security.JwtExtensions (>= 9.0.1)
- Npgsql (>= 10.0.3)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.2)
- PdfSharpCore (>= 1.3.67)
- SixLabors.ImageSharp (>= 3.1.11)
- Swashbuckle.AspNetCore (>= 10.2.1)
- Swashbuckle.AspNetCore.Newtonsoft (>= 10.2.1)
- System.Linq.Dynamic.Core (>= 1.7.2)
- System.Security.Cryptography.Xml (>= 10.0.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 10.0.1.7 | 39 | 9/8/2026 | |
| 10.0.1.6 | 114 | 8/18/2026 | |
| 10.0.1.5 | 119 | 7/28/2026 | |
| 10.0.1.4 | 110 | 7/28/2026 | |
| 10.0.1.3 | 217 | 7/22/2026 | |
| 10.0.1.2 | 126 | 7/8/2026 | |
| 10.0.1 | 139 | 7/6/2026 | |
| 10.0.0.2 | 170 | 6/17/2026 | |
| 10.0.0.1 | 148 | 6/16/2026 | |
| 10.0.0 | 171 | 6/13/2026 | |
| 8.0.3.18 | 152 | 6/2/2026 | |
| 8.0.3.17 | 138 | 5/22/2026 | |
| 8.0.3.16 | 122 | 5/22/2026 | |
| 8.0.3.15 | 135 | 5/21/2026 | |
| 8.0.3.14 | 117 | 5/21/2026 | |
| 8.0.3.13 | 120 | 5/21/2026 | |
| 8.0.3.12 | 120 | 5/21/2026 | |
| 8.0.3.11 | 124 | 5/21/2026 | |
| 8.0.3.10 | 134 | 5/20/2026 | |
| 8.0.3.9 | 114 | 5/20/2026 |