mirror of
https://github.com/bitwarden/server.git
synced 2025-07-01 16:12:49 -05:00
[EC-502] Rate Limiting Improvements (#2231)
* [EC-502] Add custom Redis IP rate limit processing strategy * [EC-502] Formatting * [EC-502] Add documentation and app setting config options * [EC-502] Formatting * [EC-502] Fix appsettings.json keys * [EC-502] Replace magic string for cache key * [EC-502] Add tests for custom processing strategy * [EC-502] Formatting * [EC-502] Use base class for custom processing strategy * [EC-502] Fix failing test
This commit is contained in:
@ -2,7 +2,6 @@
|
||||
using System.Security.Claims;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using AspNetCoreRateLimit;
|
||||
using AspNetCoreRateLimit.Redis;
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.HostedServices;
|
||||
@ -609,13 +608,20 @@ public static class ServiceCollectionExtensions
|
||||
services.AddHostedService<IpRateLimitSeedStartupService>();
|
||||
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
|
||||
|
||||
if (string.IsNullOrEmpty(globalSettings.Redis.ConnectionString))
|
||||
if (!globalSettings.DistributedIpRateLimiting.Enabled || string.IsNullOrEmpty(globalSettings.Redis.ConnectionString))
|
||||
{
|
||||
services.AddInMemoryRateLimiting();
|
||||
}
|
||||
else
|
||||
{
|
||||
services.AddRedisRateLimiting(); // Requires a registered IConnectionMultiplexer
|
||||
// Use memory stores for Ip and Client Policy stores as we don't currently use them
|
||||
// and they add unnecessary Redis network delays checking for policies that don't exist
|
||||
services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
|
||||
services.AddSingleton<IClientPolicyStore, MemoryCacheClientPolicyStore>();
|
||||
|
||||
// Use a custom Redis processing strategy that skips Ip limiting if Redis is down
|
||||
// Requires a registered IConnectionMultiplexer
|
||||
services.AddSingleton<IProcessingStrategy, CustomRedisProcessingStrategy>();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user