/// <summary> /// Configures the specified application. /// </summary> /// <param name="app">The application.</param> /// <param name="env">The env.</param> /// <param name="loggerFactory">The logger factory.</param> public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { ConfigureBase.Configure(app, env); ConfigureSwagger.Configure(app, Configuration); ConfigureAuthentication.Configure(app); ConfigureRoutes.Configure(app); ConfigureSpa.Configure(app, env); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { ConfigureSwagger.ConfigureDependenciesService(services); ConfigureService.ConfigureDependenciesService(services); ConfigureRepository.ConfigureDependenciesService(services); var config = new MapperConfiguration(cfg => { cfg.AddProfile(new DtoToModelProfile()); cfg.AddProfile(new EntityToDtoProfile()); cfg.AddProfile(new ModelToEntityProfile()); }); IMapper mapper = config.CreateMapper(); services.AddSingleton(mapper); var signingConfiguration = new SigningConfiguration(); services.AddSingleton(signingConfiguration); var tokenConfiguration = new TokenConfiguration(); new ConfigureFromConfigurationOptions <TokenConfiguration>( Configuration.GetSection("TokenConfiguration")) .Configure(tokenConfiguration); services.AddSingleton(tokenConfiguration); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signingConfiguration.SecurityKey; paramsValidation.ValidAudience = tokenConfiguration.Audience; paramsValidation.ValidIssuer = tokenConfiguration.Issuer; paramsValidation.ValidateIssuerSigningKey = true; paramsValidation.ValidateLifetime = true; paramsValidation.ClockSkew = TimeSpan.Zero; }); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser() .Build()); }); services.AddControllers(); }