public AuthTypeResolveContributor(IHttpContextAccessor httpContextAccessor, IClientPolicyStore clientPolicyStore, ClientRateLimitOptions clientOptions, ClientRateLimitPolicies clientPolicies) { _clientOptions = clientOptions; _clientPolicies = clientPolicies; _httpContextAccessor = httpContextAccessor; _clientPolicyStore = clientPolicyStore; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddOptions(); services.AddMemoryCache(); //configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <UrlRateLimitOptions>(Configuration.GetSection("UrlRateLimiting")); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); var opt = new ClientRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("ClientRateLimiting"), opt); // Add framework services. services.AddMvc(); }
public void ConfigureServices(IServiceCollection services) { services.Configure <SiteSettings>(Configuration.GetSection(nameof(SiteSettings))); services.Configure <IdentitySiteSettings>(Configuration.GetSection(nameof(IdentitySiteSettings))); services.InitializeAutoMapper(); services.AddDbContext(Configuration); //services.AddCustomIdentity(_siteSetting.IdentitySettings); // Adds all of the ASP.NET Core Identity related services and configurations at once. services.AddCustomIdentityServices(_identitySiteSettings); services.AddMinimalMvc(); services.AddDNTCommonWeb(); services.AddCloudscribePagination(); services.AddJwtAuthentication(_siteSetting.JwtSettings); services.AddCustomApiVersioning(); services.AddMemoryCache(); services.AddSwagger(); services.AddHttpCacheHeaders( (expirationModelOptions) => { expirationModelOptions.MaxAge = 600; }, (validationModelOptions) => { validationModelOptions.MustRevalidate = true; }); // configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); // configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); var opt = new ClientRateLimitOptions(); Configuration.GetSection("ClientRateLimiting").Bind(opt); services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton <IRateLimitConfiguration, RateLimitConfiguration>(); //services.AddElmah(Configuration, _siteSetting); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // needed to load configuration from appsettings.json services.AddOptions(); // needed to store rate limit counters and ip rules services.AddMemoryCache(); // configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); // configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); var opt = new ClientRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("ClientRateLimiting"), opt); services.AddMvc().AddNewtonsoftJson(); // https://github.com/aspnet/Hosting/issues/793 // the IHttpContextAccessor service is not registered by default. // the clientId/clientIp resolvers use it. services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); // configure the resolvers services.AddSingleton <IRateLimitConfiguration, RateLimitConfiguration>(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // needed to load configuration from appsettings.json services.AddOptions(); // needed to store rate limit counters and ip rules services.AddMemoryCache(); //configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); var opt = new ClientRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("ClientRateLimiting"), opt); services.AddMvc().AddNewtonsoftJson(); }
public ClientRateLimitProcessor(ClientRateLimitOptions options, IRateLimitCounterStore counterStore, IClientPolicyStore policyStore) : base(options, counterStore) { _options = options; _policyStore = policyStore; }
public ClientRateLimitProcessor( ClientRateLimitOptions options, ICacheManager cacheManager, IRateLimitConfiguration config) : base(cacheManager, options, new ClientCounterKeyBuilder(), config) { _options = options; }
public MemoryCacheClientPolicyStore( IMemoryCache cache, ClientRateLimitOptions options = null, ClientRateLimitPolicies policies = null) : base(cache) { _options = options; _policies = policies; }
public AspNetCoreRateLimitMiddleware( RequestDelegate next, IOptions <ClientRateLimitOptions> optionsAccessor, IClientPolicyStore clientPolicyStore) { this.next = next ?? throw new ArgumentNullException(nameof(next)); _options = optionsAccessor.Value; _clientPolicyStore = clientPolicyStore; }
public ClientPolicyStore( ICacheManager cacheManager, IOptions <ClientRateLimitOptions> options = null, IOptions <ClientRateLimitPolicies> policies = null) { _cacheManager = cacheManager; _options = options?.Value; _policies = policies?.Value; }
public RateLimitConfiguration( IpRateLimitOptions ipOptions, ClientRateLimitOptions clientOptions) { IpRateLimitOptions = ipOptions; ClientRateLimitOptions = clientOptions; RegisterResolvers(); }
public ClientRateLimitProcessor( ClientRateLimitOptions options, IRateLimitCounterStore counterStore, IClientPolicyStore policyStore, IRateLimitConfiguration config) : base(options, counterStore, new ClientCounterKeyBuilder(options), config) { _options = options; _policyStore = policyStore; }
public ClientRateLimitProcessor(ClientRateLimitOptions options, IRateLimitCounterStore counterStore, IClientPolicyStore policyStore) { _options = options; _counterStore = counterStore; _policyStore = policyStore; _core = new RateLimitCore(false, options, _counterStore); }
public CustomRateLimitConfiguration(IHttpContextAccessor httpContextAccessor, IClientPolicyStore clientPolicyStore, IOptions <IpRateLimitOptions> ipOptions, IOptions <ClientRateLimitOptions> clientOptions, IOptions <ClientRateLimitPolicies> clientPolicies) { IpRateLimitOptions = ipOptions?.Value; ClientRateLimitOptions = clientOptions?.Value; ClientRateLimitPolicies = clientPolicies?.Value; HttpContextAccessor = httpContextAccessor; ClientPolicyStore = clientPolicyStore; ClientResolvers = new List <IClientResolveContributor>(); IpResolvers = new List <IIpResolveContributor>(); RegisterResolvers(); }
public ClientRateLimitCounterStore( IOptions <ClientRateLimitOptions> options, IClientRateLimitProcessor clientRateLimitProcessor, IRateLimitCounterStore counterStore, IClientPolicyStore policyStore) { _options = options.Value; _processor = clientRateLimitProcessor; _counterStore = counterStore; _core = new RateLimitCore(false, options.Value, _counterStore); }
public MemoryCacheClientPolicyStore(IMemoryCache memoryCache, ClientRateLimitOptions options, ClientRateLimitPolicies policies) { _memoryCache = memoryCache; //save client rules defined in appsettings in cache on startup if (options != null && policies != null && policies != null && policies.ClientRules != null) { foreach (var rule in policies.ClientRules) { Set($"{options.ClientPolicyPrefix}_{rule.ClientId}", new ClientRateLimitPolicy { ClientId = rule.ClientId, Rules = rule.Rules }); } } }
static ClientRateLimit() { if (Setting.Configuration?.IpRateLimiting == null) { return; } Logger = Factory.Logger.Value; Options = Setting.Configuration.ClientRateLimiting; Policies = Setting.Configuration.ClientRateLimitPolicies; MemoryCache = new MemoryCacheManager(); var rateLimitCounterStore = Factory.RateLimitCounterStore.Value; IClientPolicyStore clientPolicyStore = new MemoryCacheClientPolicyStore(MemoryCache, Options, Policies); Processor = new ClientRateLimitProcessor(Options, rateLimitCounterStore, clientPolicyStore); Configurationed = true; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddOptions(); services.AddMemoryCache(); //configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <UserRateLimitOptions>(Configuration.GetSection("UserRateLimiting")); services.Configure <UserRateLimitPolicies>(Configuration.GetSection("UserRateLimitPolicies")); services.AddSingleton <IUserPolicyStore, MemoryCacheUserPolicyStore>(); var opt = new ClientRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("ClientRateLimiting"), opt); var optUser = new UserRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("UserRateLimiting"), optUser); services.AddTransient <IPeopleRepository, PeopleRepository>(); services.AddTransient <IPersonCarRepository, PersonCarRepository>(); services.AddTransient <ICarRepository, CarRepository>(); // Add DbContext var conStr = Configuration["Data:ApplicationDb:ConnectionString"]; services.AddScoped((_) => new ApplicationDbContext(conStr)); // Add framework services. //services.AddMvc(); services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); services.AddSwaggerGen(); services.ConfigureSwaggerGen(options => { options.SingleApiVersion(new Info { Version = "v1", Title = "Swashbuckle Test API", Description = "A simple example ASP.NET Core Web API", TermsOfService = "None", Contact = new Contact { Name = "Darren Schwarz", Email = "*****@*****.**", Url = "http://www.darrenschwarz.com" }, License = new License { Name = "Use under LICX", Url = "http://url.com" } }); //Determine base path for the application. var basePath = PlatformServices.Default.Application.ApplicationBasePath; //Set the comments path for the swagger json and ui. options.IncludeXmlComments(basePath + "\\SwashbuckleExample.xml"); }); services.AddAuthentication(options => new IISOptions() { ForwardWindowsAuthentication = true }); services.AddAuthorization(options => { options.AddPolicy("IOAdmin", policy => policy.Requirements.Add(new RoleRequirement("IOAdmin"))); options.AddPolicy("SomeOther", policy => policy.Requirements.Add(new RoleRequirement("SomeOther"))); }); services.AddSingleton <IAuthorizationHandler, RoleHandler>(); var r = Configuration.GetSection("Role"); }
public ClientRateLimitController1(IOptions <ClientRateLimitOptions> optionsAccessor, IClientPolicyStore clientPolicyStore) { _options = optionsAccessor.Value; _clientPolicyStore = clientPolicyStore; }
public UserController(IUserService userService, IClientPolicyStore clientPolicyStore, IOptions <ClientRateLimitOptions> clientRateOptions) { this.userService = userService; this.clientPolicyStore = clientPolicyStore; this.clientRateLimitOptions = clientRateOptions?.Value; }
public HeaderClientRequestStore(IOptions <ClientRateLimitOptions> options) { _options = options.Value; }
public ClientCounterKeyBuilder(ClientRateLimitOptions options) { _options = options; }
public void ConfigureServices(IServiceCollection services) { services.AddDbContext <ApplicationDbContext>(options => { // Configure the context to use Microsoft SQL Server. options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")); }); // Register the Identity services. services.AddIdentity <ApplicationUser, ApplicationRole>() .AddEntityFrameworkStores <ApplicationDbContext>() .AddDefaultTokenProviders(); services.ConfigureApplicationCookie(options => { options.Events.OnRedirectToLogin = ctx => { if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == (int)HttpStatusCode.OK) { ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized; ctx.Response.WriteAsync("{\"success\" : false, \"errors\" : \"Unauthorized\"}"); } else { ctx.Response.Redirect(ctx.RedirectUri); } return(Task.CompletedTask); }; }); services.AddAutoMapperSetup(); services.AddOptions(); services.AddResponseCompression(); services.AddMemoryCache(); //configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); var opt = new ClientRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("ClientRateLimiting"), opt); //.AddJsonOptions(options => //{ // options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; //}); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "API", Version = "v1" }); // Swagger 2.+ support var security = new Dictionary <string, IEnumerable <string> > { { "Bearer", new string[] { } }, }; c.AddSecurityDefinition("Bearer", new ApiKeyScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = "header", Type = "apiKey" }); c.AddSecurityRequirement(security); }); // Adding MediatR for Domain Events and Notifications services.AddMediatR(typeof(Startup)); // .NET Native DI Abstraction RegisterServices(services); services.AddCors(); // New instance every time, only configuration class needs so its ok services.AddTransient <ApplicationDbContext>(); services.AddScoped <ApiExceptionFilter>(); services.AddTransient <IEmailSender, EmailSender>(); services.AddAuthentication("Bearer") .AddIdentityServerAuthentication(options => { options.Authority = "http://localhost:50000"; options.RequireHttpsMetadata = false; options.ApiName = "Api1"; options.SupportedTokens = SupportedTokens.Both; }); services.AddMvcCore() .AddAuthorization(options => options.AddPolicy("Administrator", policy => policy.RequireClaim("role", "Administrator"))) .AddJsonFormatters() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); }) .AddApiExplorer(); }
public void ConfigureServices(IServiceCollection services) { services.AddDbContext <LibraryDbContext>(options => options.UseSqlServer(this.Configuration.GetConnectionString("DefaultConnection"))); services.AddSingleton <IFileProvider>( new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), RootFolderName))); services .AddIdentity <User, IdentityRole>(options => { options.SignIn.RequireConfirmedEmail = true; options.Password.RequireDigit = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; }) .AddEntityFrameworkStores <LibraryDbContext>() .AddDefaultTokenProviders(); services.AddOptions(); services.AddMemoryCache(); //configure ip rate limiting middle-ware services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>(); services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); //configure client rate limiting middleware services.Configure <ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting")); services.Configure <ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies")); services.AddSingleton <IClientPolicyStore, MemoryCacheClientPolicyStore>(); var opt = new ClientRateLimitOptions(); ConfigurationBinder.Bind(Configuration.GetSection("ClientRateLimiting"), opt); services.AddDomainServices(); services.AddAutoMapper(); services.AddRouting(routing => routing.LowercaseUrls = true); services.Configure <AuthMessageSenderOptions>(Configuration.GetSection("EmailSettings")); services.AddLocalization(options => options.ResourcesPath = "Resources"); //Allows injecting configurations in razor views from json file services.Configure <ApplicationConfigurations>(Configuration.GetSection("ApplicationConfigurations")); services.AddMvc(options => { options.Filters.Add <AutoValidateAntiforgeryTokenAttribute>(); options.Filters.Add <RequireHttpsAttribute>(); }) .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(); services.Configure <RequestLocalizationOptions>(options => { var supportedCultures = new[] { new CultureInfo("bg-BG"), new CultureInfo("en-US") }; options.DefaultRequestCulture = new RequestCulture(culture: "bg-BG", uiCulture: "bg-BG"); options.SupportedCultures = supportedCultures; options.SupportedUICultures = supportedCultures; options.RequestCultureProviders = new List <IRequestCultureProvider> { new QueryStringRequestCultureProvider(), new CookieRequestCultureProvider() }; }); }