using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Ocelot.DependencyInjection; using Ocelot.Middleware; namespace OcelotApiGw { public class Startup { private readonly IConfiguration _cfg; public Startup(IConfiguration configuration) { _cfg = configuration; } public void ConfigureServices(IServiceCollection services) { var identityUrl = _cfg.GetValue("IdentityUrl"); var authenticationProviderKey = "IdentityApiKey"; services .AddCors(options => { options .AddPolicy( "CorsPolicy", builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials() ); }); services .AddAuthentication() .AddJwtBearer( authenticationProviderKey, x => { x.Authority = identityUrl; x.RequireHttpsMetadata = false; x.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters() { ValidAudiences = new[] { "orders", "basket", "locations", "marketing", "mobileshoppingagg", "webshoppingagg" } }; x.Events = new Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents() { #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously OnAuthenticationFailed = async ctx => #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { }, #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously OnTokenValidated = async ctx => #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { }, #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously OnMessageReceived = async ctx => #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { } }; }); services.AddOcelot(_cfg); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { var pathBase = _cfg["PATH_BASE"]; if (!string.IsNullOrEmpty(pathBase)) { app.UsePathBase(pathBase); } if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } loggerFactory.AddConsole(_cfg.GetSection("Logging")); app.UseCors("CorsPolicy"); app.UseOcelot().Wait(); } } }