using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using CacheManager.Core; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; 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() { OnAuthenticationFailed = async ctx => { int i = 0; }, OnTokenValidated = async ctx => { int i = 0; }, OnMessageReceived = async ctx => { int i = 0; } }; }); 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(); } } }