public override void ConfigureServicesCore(IServiceCollection services) { // Connection Cryptography Compliance: All connections must be utilizing TLS 1.2 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "Cloud Born API", Version = "v1" }); }); services.AddMvc(options => { options.Filters.Add(new ErrorHandlingFilter()); options.Filters.Add(new OperationLoggingFilter(ServiceComponent.CloudBornWebService)); options.AllowValidatingTopLevelNodes = true; }); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => TokenValidation.CreateAuthenticationOptionsForMultiTenant(options, this.configuration.TokenValidationSettings)); services.AddAuthorization(options => { options.AddPolicy(AuthorizationPolicyConstants.OnlyTestApp, policy => policy.RequireClaim( "appid", this.configuration.AuthorizedResources.TestTrustedAppId)); }); // Add Gzip compression to our responses services.Configure <GzipCompressionProviderOptions>(options => { options.Level = CompressionLevel.Optimal; }); services.AddResponseCompression(options => { options.Providers.Add <GzipCompressionProvider>(); }); services.AddCors(options => { options.AddPolicy( CorsPolicyName, policy => { // Allow origins to match a configured wildcarded domains policy .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyMethod() .WithHeaders("authorization", "accept", "content-type", "origin"); }); }); }