diff --git a/src/FiscalOS.API/Program.cs b/src/FiscalOS.API/Program.cs index e84eba6..8334a6f 100644 --- a/src/FiscalOS.API/Program.cs +++ b/src/FiscalOS.API/Program.cs @@ -1,19 +1,41 @@ +using FiscalOS.Infra.Authentication; + var builder = WebApplication.CreateBuilder(args); builder.Services.AddValidation(); -builder.Services.AddOpenApi(); builder.Services.AddInfrastructure(); +builder.Services.AddAuthentication(static o => + { + o.DefaultAuthenticateScheme = Schemes.Default; + o.DefaultChallengeScheme = Schemes.Default; + }) + .AddJwtBearer(Schemes.Default) + .AddJwtBearer(Schemes.AllowExpiredTokens); + +builder.Services.AddAuthorizationBuilder() + .AddPolicy(Schemes.Default, static policy => + { + policy.AuthenticationSchemes = [Schemes.Default]; + policy.RequireAuthenticatedUser(); + }) + .AddPolicy(Schemes.AllowExpiredTokens, static policy => + { + policy.AuthenticationSchemes = [Schemes.AllowExpiredTokens]; + policy.RequireAuthenticatedUser(); + }); + var app = builder.Build(); -if (app.Environment.IsDevelopment()) -{ - app.MapOpenApi(); -} +app.UseAuthentication(); +app.UseAuthorization(); app.UseHttpsRedirection(); app.MapLoginEndpoint(); +app.MapRefreshEndpoint() + .RequireAuthorization(Schemes.AllowExpiredTokens); + app.Run(); \ No newline at end of file diff --git a/src/FiscalOS.API/Usings.cs b/src/FiscalOS.API/Usings.cs index 2116758..dbf94ed 100644 --- a/src/FiscalOS.API/Usings.cs +++ b/src/FiscalOS.API/Usings.cs @@ -1,10 +1,13 @@ global using System.ComponentModel.DataAnnotations; +global using System.Security.Claims; global using System.Text.Json.Serialization; +global using FiscalOS.API.Http; global using FiscalOS.API.Login; +global using FiscalOS.API.Refresh; global using FiscalOS.Core.Authentication; global using FiscalOS.Infra.Data; global using FiscalOS.Infra.DependencyInjection; global using Microsoft.AspNetCore.Mvc; -global using Microsoft.EntityFrameworkCore; \ No newline at end of file +global using Microsoft.EntityFrameworkCore;