using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using System.Text; var builder = WebApplication.CreateBuilder(args); // ====================== // Lägg till Logger // ====================== var logger = Logger.LoggerFactory.CreateFromConfiguration(builder.Configuration); builder.Services.AddSingleton(logger); // ====================== // Lägg till Controllers // ====================== builder.Services.AddControllers(); builder.Services.AddCors(options => { options.AddPolicy("AllowFrontend", policy => { policy.WithOrigins("http://localhost:5173") .AllowAnyHeader() .AllowAnyMethod(); }); }); // ====================== // Läs JWT-inställningar // ====================== var jwtSettings = builder.Configuration.GetSection("JwtSettings"); string? secretKey = jwtSettings["Key"]; if(string.IsNullOrEmpty(secretKey)) { return; } var key = Encoding.UTF8.GetBytes(secretKey); // ====================== // Lägg till JWT Authentication // ====================== builder.Services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = jwtSettings["Issuer"], ValidAudience = jwtSettings["Audience"], IssuerSigningKey = new SymmetricSecurityKey(key) }; }); // ====================== // Registrera JwtService // ====================== builder.Services.Configure( builder.Configuration.GetSection("JwtSettings")); builder.Services.AddScoped(); // ====================== // Swagger (för test) // ====================== builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // ====================== // Middleware // ====================== app.UseSwagger(); app.UseSwaggerUI(); app.UseCors("AllowFrontend"); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); await app.RunAsync();