using Microsoft.EntityFrameworkCore; using Casestudy.DAL; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using System.Text; namespace Casestudy { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); builder.Services.AddDbContext<AppDbContext>(c => c.UseSqlServer(connectionString)); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // Allow for CORS calls from Vue server var MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; builder.Services.AddCors(options => { options.AddPolicy(MyAllowSpecificOrigins, builder => { builder.WithOrigins("http://localhost:8080").AllowAnyHeader().AllowAnyMethod(); }); }); // jwt addition // get key from settings var appSettings = builder.Configuration.GetSection("AppSettings").GetValue<string>("Secret"); var key = Encoding.ASCII.GetBytes(appSettings); // add scheme and options builder.Services.AddAuthentication(scheme => { scheme.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; scheme.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(option => { option.RequireHttpsMetadata = false; option.SaveToken = true; option.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseDefaultFiles(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCors(MyAllowSpecificOrigins); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run(); } } }