// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddSignalR().AddAzureSignalR(Configuration.GetConnectionString("SignalRConnection")); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest); services.AddSwaggerDocumentation(); IJwtSettings jwtSettings = new JwtSettings(Configuration); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = false, ValidateAudience = false, ValidateLifetime = true, IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(jwtSettings.JWTKey) ), ValidateIssuerSigningKey = true, }; }); // TODO: refactor this and specify origins services.AddCors(options => { options.AddPolicy("AllowAll", builder => { builder .AllowAnyHeader() .AllowAnyMethod() .SetIsOriginAllowed((host) => true) .AllowCredentials(); }); }); ConfigureMapperFactory(services); BLServices.AddServices(services); DalServices.AddServices(services, Configuration.GetConnectionString("DefaultConnection")); WebServices.AddServices(services); var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .RequireClaim("IsAuthorization", "true") .Build(); services .AddMvc(options => { options.Filters.Add(new AuthorizeFilter(policy)); }) .SetCompatibilityVersion(CompatibilityVersion.Latest); services.AddResponseCompression(options => { options.Providers.Add <GzipCompressionProvider>(); options.MimeTypes = new[] { "image/jpg", "image/jpeg", "image/png", "image/svg+xml" }; options.EnableForHttps = true; }); services.Configure <GzipCompressionProviderOptions>(options => { options.Level = CompressionLevel.Optimal; }); }