// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IDefaultDbContextInitializer databaseInitializer) { // Log to console (stdout) - in production stdout will be written to /var/log/{{app_name}}.out.log loggerFactory.AddConsole(Configuration.GetSection("logging")); loggerFactory.AddDebug(); // Apply any pending migrations // Do not call EnsureCreated() b/c it does not log to _EFMigrationsHistory table (Ref: https://github.com/aspnet/EntityFramework/issues/3875) databaseInitializer.Migrate(); if (env.IsDevelopment()) { databaseInitializer.Seed().GetAwaiter().GetResult(); // Configure Webpack Middleware (Ref: http://blog.stevensanderson.com/2016/05/02/angular2-react-knockout-apps-on-aspnet-core/) // - Intercepts requests for webpack bundles and routes them through Webpack - this prevents needing to run Webpack file watcher separately // - Enables Hot module replacement (HMR) app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions { HotModuleReplacement = true, ReactHotModuleReplacement = true, ConfigFile = System.IO.Path.Combine(Configuration["webClientPath"], "webpack.config.js") }); app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } // If not requesting /api*, rewrite to / so SPA app will be returned app.UseSpaFallback(new SpaFallbackOptions() { ApiPathPrefix = "/api", RewritePath = "/" }); app.UseDefaultFiles(); app.UseStaticFiles(); app.UseForwardedHeaders(new ForwardedHeadersOptions { // Read and use headers coming from reverse proxy: X-Forwarded-For X-Forwarded-Proto // This is particularly important so that HttpContet.Request.Scheme will be correct behind a SSL terminating proxy ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); app.UseAuthentication(); app.UseMvc(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IDefaultDbContextInitializer databaseInitializer) { // Log to console (stdout) - in production stdout will be written to /var/log/{{app_name}}.out.log loggerFactory.AddConsole(Configuration.GetSection("logging")); loggerFactory.AddDebug(); // Apply any pending migrations // Do not call EnsureCreated() b/c it does not log to _EFMigrationsHistory table (Ref: https://github.com/aspnet/EntityFramework/issues/3875) databaseInitializer.Migrate(); if (env.IsDevelopment()) { databaseInitializer.Seed().GetAwaiter().GetResult(); // Configure Webpack Middleware (Ref: http://blog.stevensanderson.com/2016/05/02/angular2-react-knockout-apps-on-aspnet-core/) // - Intercepts requests for webpack bundles and routes them through Webpack - this prevents needing to run Webpack file watcher separately // - Enables Hot module replacement (HMR) app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions { HotModuleReplacement = true, ConfigFile = System.IO.Path.Combine(Configuration["webClientPath"], "webpack.config.js") }); app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } // If not requesting /api*, rewrite to / so SPA app will be returned app.UseSpaFallback(new SpaFallbackOptions() { ApiPathPrefix = "/api", RewritePath = "/" }); app.UseDefaultFiles(); app.UseStaticFiles(); app.UseForwardedHeaders(new ForwardedHeadersOptions { // Read and use headers coming from reverse proxy: X-Forwarded-For X-Forwarded-Proto // This is particularly important so that HttpContet.Request.Scheme will be correct behind a SSL terminating proxy ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); // Register the validation middleware, that is used to decrypt // the access tokens and populate the HttpContext.User property. app.UseOAuthValidation(); JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); JwtSecurityTokenHandler.DefaultOutboundClaimTypeMap.Clear(); // Use JWT Bearer Authentication (i.e. authenitcate with JWT in HTTP request header) app.UseJwtBearerAuthentication(new JwtBearerOptions { AutomaticAuthenticate = true, AutomaticChallenge = true, RequireHttpsMetadata = false, Audience = "resource-server", Authority = Configuration["frontEndUrl"] }); app.UseOpenIddict(); app.UseIdentity(); app.UseMvc(); }