AuthScape App
Core application module that bootstraps AuthScape with essential services and configuration.
The AuthScape App module is the core foundation that bootstraps your application with essential services, configuration, and infrastructure.
Features
- Application bootstrap and initialization
- Service registration and dependency injection
- Configuration loading from multiple sources
- Database context setup
- Authentication and authorization setup
- Middleware pipeline configuration
Setup
Program.cs
csharp
var builder = WebApplication.CreateBuilder(args);// Add AuthScape core servicesbuilder.Services.AddAuthScape(builder.Configuration);// Add database contextbuilder.Services.AddAuthScapeDatabase(builder.Configuration);// Add authenticationbuilder.Services.AddAuthScapeAuthentication(builder.Configuration);var app = builder.Build();// Configure middlewareapp.UseAuthScape();app.Run();
Configuration
The core module reads from appsettings.json:
json
{"AppSettings": {"DatabaseContext": "Server=localhost;Database=authscape;...","BaseUrl": "https://api.yourapp.com","CorsOrigins": ["https://yourapp.com"],"DefaultCompanyId": 1,"EnableSwagger": true,"TokenLifetimeMinutes": 60}}
Core Services
IUserManagementService
Access current user information:
csharp
public class MyController : ControllerBase{private readonly IUserManagementService _userService;public MyController(IUserManagementService userService){_userService = userService;}[HttpGet]public async Task<IActionResult> GetProfile(){var user = await _userService.GetSignedInUser();return Ok(new{user.Id,user.Email,user.FirstName,user.LastName,user.CompanyId,user.Roles});}}
DatabaseContext
Entity Framework Core context with all AuthScape entities:
csharp
public class MyService{private readonly DatabaseContext _context;public MyService(DatabaseContext context){_context = context;}public async Task<List<User>> GetUsersAsync(){return await _context.Users.Include(u => u.Company).Where(u => u.IsActive).ToListAsync();}}
Middleware
The UseAuthScape() method configures the middleware pipeline:
csharp
app.UseRouting();app.UseCors();app.UseAuthentication();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});
Extension Methods
AddAuthScape
Registers core services:
csharp
public static IServiceCollection AddAuthScape(this IServiceCollection services,IConfiguration configuration){services.Configure<AppSettings>(configuration.GetSection("AppSettings"));services.AddScoped<IUserManagementService, UserManagementService>();services.AddScoped<ICompanyService, CompanyService>();// ... more servicesreturn services;}
AddAuthScapeDatabase
Configures Entity Framework with auto-detection:
csharp
public static IServiceCollection AddAuthScapeDatabase(this IServiceCollection services,IConfiguration configuration){var connectionString = configuration["AppSettings:DatabaseContext"];// Auto-detect provider from connection stringif (connectionString.Contains("Server=tcp:"))services.AddDbContext<DatabaseContext>(o => o.UseSqlServer(connectionString));else if (connectionString.Contains("Host="))services.AddDbContext<DatabaseContext>(o => o.UseNpgsql(connectionString));elseservices.AddDbContext<DatabaseContext>(o => o.UseSqlite(connectionString));return services;}
Health Checks
Built-in health check endpoints:
csharp
app.MapHealthChecks("/health");app.MapHealthChecks("/health/ready", new HealthCheckOptions{Predicate = check => check.Tags.Contains("ready")});
Environment Detection
csharp
if (app.Environment.IsDevelopment()){app.UseSwagger();app.UseSwaggerUI();}else{app.UseHsts();app.UseHttpsRedirection();}
Best Practices
- Use dependency injection - All services are registered in the DI container
- Follow configuration hierarchy - Environment-specific settings override base settings
- Use async/await - All database operations are async
- Check authentication - Use
[Authorize]attribute on protected endpoints - Handle errors gracefully - Use global exception handling middleware