Acontplus.Services
1.3.0
dotnet add package Acontplus.Services --version 1.3.0
NuGet\Install-Package Acontplus.Services -Version 1.3.0
<PackageReference Include="Acontplus.Services" Version="1.3.0" />
<PackageVersion Include="Acontplus.Services" Version="1.3.0" />
<PackageReference Include="Acontplus.Services" />
paket add Acontplus.Services --version 1.3.0
#r "nuget: Acontplus.Services, 1.3.0"
#:package Acontplus.Services@1.3.0
#addin nuget:?package=Acontplus.Services&version=1.3.0
#tool nuget:?package=Acontplus.Services&version=1.3.0
Acontplus.Services
Modern service library providing enterprise-grade patterns for ASP.NET Core applications.
Features
🏗️ Enterprise Architecture Patterns
- Service Layer: Clean separation of concerns with dependency injection
- Action Filters: Reusable cross-cutting concerns (validation, logging, security)
- Authorization Policies: Fine-grained access control for modern scenarios
- Middleware Pipeline: Properly ordered middleware for security and context management
🔒 Security & Compliance
- Security Headers: Comprehensive HTTP security header management
- Content Security Policy: CSP nonce generation and management
- Client Validation: Client-ID based access control
- Tenant Isolation: Multi-tenant security policies
📱 Device & Context Awareness
- Device Detection: Smart device type detection from headers and user agents
- Request Context: Correlation IDs, tenant isolation, and request tracking
- Device-Aware: Mobile and tablet-aware policies and services
🚀 Performance & Observability
- Request Logging: Structured logging with performance metrics
- Health Checks: Comprehensive health monitoring for all services
- Response Compression: Optimized content delivery
- Rate Limiting: Built-in rate limiting capabilities
Quick Start
1. Basic Setup
public void ConfigureServices(IServiceCollection services)
{
// Add enterprise services with all patterns
services.AddEnterpriseServices(Configuration);
// Add authorization policies
services.AddEnterpriseAuthorizationPolicies();
// Add MVC with enterprise filters
services.AddEnterpriseMvc();
// Add health checks
services.AddEnterpriseHealthChecks(Configuration);
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Use enterprise middleware pipeline
app.UseEnterpriseMiddleware(env);
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => endpoints.MapControllers());
}
2. Configuration
Add to your appsettings.json
:
{
"RequestContext": {
"EnableSecurityHeaders": true,
"FrameOptionsDeny": true,
"ReferrerPolicy": "strict-origin-when-cross-origin",
"RequireClientId": false,
"AnonymousClientId": "anonymous",
"AllowedClientIds": ["web-app", "mobile-app", "admin-portal"]
}
}
Services
IRequestContextService
Manages request context information across the application:
public class MyController : ControllerBase
{
private readonly IRequestContextService _requestContext;
public MyController(IRequestContextService requestContext)
{
_requestContext = requestContext;
}
[HttpGet]
public IActionResult Get()
{
var context = _requestContext.GetRequestContext();
var isMobile = _requestContext.IsMobileRequest();
return Ok(new { context, isMobile });
}
}
ISecurityHeaderService
Manages HTTP security headers:
public class SecurityController : ControllerBase
{
private readonly ISecurityHeaderService _securityHeaders;
[HttpGet("headers")]
public IActionResult GetRecommendedHeaders()
{
var headers = _securityHeaders.GetRecommendedHeaders(isDevelopment: false);
return Ok(headers);
}
}
IDeviceDetectionService
Detects device types and capabilities:
public class DeviceController : ControllerBase
{
private readonly IDeviceDetectionService _deviceDetection;
[HttpGet("capabilities")]
public IActionResult GetCapabilities()
{
var userAgent = Request.Headers.UserAgent.ToString();
var capabilities = _deviceDetection.GetDeviceCapabilities(userAgent);
return Ok(capabilities);
}
}
Authorization Policies
Client-ID Based Access
[Authorize(Policy = "RequireClientId")]
[HttpGet("secure")]
public IActionResult SecureEndpoint()
{
return Ok("Access granted");
}
Tenant Isolation
[Authorize(Policy = "RequireTenant")]
[HttpGet("tenant-data")]
public IActionResult GetTenantData()
{
return Ok("Tenant-specific data");
}
Device Type Restrictions
[Authorize(Policy = "MobileOnly")]
[HttpGet("mobile-only")]
public IActionResult MobileOnlyEndpoint()
{
return Ok("Mobile access only");
}
Action Filters
Global Filters
Automatically applied to all controllers:
SecurityHeaderActionFilter
: Applies security headersRequestLoggingActionFilter
: Logs request details and performanceValidationActionFilter
: Handles model validation with standardized responses
Manual Filter Application
[ServiceFilter(typeof(RequestLoggingActionFilter))]
public class ApiController : ControllerBase
{
// Controller actions
}
Middleware Pipeline
The enterprise middleware pipeline is automatically configured in the correct order:
- Security Headers: Applied early for all responses
- CSP Nonce: Generates Content Security Policy nonces
- Request Context: Extracts and validates request context
- Exception Handling: Global exception handling with standardized responses
Health Checks
Access health information at /health
:
{
"status": "Healthy",
"results": {
"request-context": {
"status": "Healthy",
"description": "Request context service is operational"
},
"security-headers": {
"status": "Healthy",
"description": "Security header service is operational"
},
"device-detection": {
"status": "Healthy",
"description": "Device detection service is operational"
}
}
}
Migration Guide
From Legacy Services
Replace old extension class names:
IdentityServiceExtensions
→JwtAuthenticationExtensions
ServiceConfigurationExtensions
→InfrastructureServiceExtensions
ExceptionHandlingExtensions
→GlobalExceptionHandlingExtensions
Update configuration classes:
RequestContextOptions
→RequestContextConfiguration
AppConfiguration
→ApplicationConfigurationBuilder
Adopt new service patterns:
// Old approach var userId = HttpContext.User.GetUserId(); // New approach var userId = _requestContext.GetUserId(); // via IRequestContextService
Best Practices
- Use dependency injection for all services
- Apply authorization policies at the controller or action level
- Configure security headers appropriate for your environment
- Monitor health checks in production
- Use structured logging with correlation IDs
- Validate device headers for mobile applications
Version History
- v1.2.0: Added enterprise service patterns and authorization policies
- v1.1.x: Enhanced middleware and security features
- v1.0.x: Initial release with basic services
Contributing
When adding new features:
- Follow the established patterns (Services, Filters, Policies)
- Add comprehensive logging
- Include health checks for new services
- Update this documentation
- Add unit tests for new functionality
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net9.0
- Acontplus.Core (>= 1.3.1)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 9.0.7)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.7)
- Microsoft.IdentityModel.Tokens (>= 8.12.1)
- NetEscapades.AspNetCore.SecurityHeaders (>= 1.1.0)
- System.IdentityModel.Tokens.Jwt (>= 8.12.1)
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 |
---|---|---|
1.3.0 | 42 | 7/18/2025 |
1.2.0 | 132 | 7/14/2025 |
1.1.4 | 129 | 7/14/2025 |
1.1.3 | 75 | 7/11/2025 |
1.1.2 | 80 | 7/11/2025 |
1.1.1 | 130 | 7/10/2025 |
1.1.0 | 131 | 7/10/2025 |
1.0.12 | 120 | 7/10/2025 |
1.0.11 | 130 | 7/9/2025 |
1.0.10 | 129 | 7/9/2025 |
1.0.9 | 129 | 7/6/2025 |
1.0.8 | 133 | 7/6/2025 |
1.0.7 | 129 | 7/6/2025 |
1.0.6 | 77 | 7/4/2025 |
1.0.5 | 135 | 7/2/2025 |
1.0.4 | 131 | 7/2/2025 |
1.0.3 | 132 | 7/2/2025 |
1.0.2 | 131 | 7/1/2025 |
Updated for .NET 9+ with modern C# features, improved middleware, and enhanced documentation.