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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataC.CoreApi" Version="10.0.1.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DataC.CoreApi" Version="10.0.1.7" />
                    
Directory.Packages.props
<PackageReference Include="DataC.CoreApi" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DataC.CoreApi --version 10.0.1.7
                    
#r "nuget: DataC.CoreApi, 10.0.1.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DataC.CoreApi@10.0.1.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DataC.CoreApi&version=10.0.1.7
                    
Install as a Cake Addin
#tool nuget:?package=DataC.CoreApi&version=10.0.1.7
                    
Install as a Cake Tool

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.
  • UsuarioIAspNetUser/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/PostgresServicesContextBase, base de DbContext com 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 por MIOMailer2Service.

Suporte

Repositório: https://gitlab.com/datac-stella/datac-coreapi

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.12 is deprecated because it has critical bugs.
8.0.3.11 124 5/21/2026 8.0.3.11 is deprecated because it has critical bugs.
8.0.3.10 134 5/20/2026 8.0.3.10 is deprecated because it has critical bugs.
8.0.3.9 114 5/20/2026
Loading failed