feat(security): wire LoginThrottle into management Basic-Auth and /auth/login|token — password-spray guard (arch-review P1/UA5)

Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
Joseph Doherty
2026-07-10 05:13:59 -04:00
parent d4d1732a9e
commit 7af36fd5dc
5 changed files with 143 additions and 0 deletions
@@ -96,6 +96,10 @@ public class AuditEndpointsTests
services.AddSingleton(repo);
services.AddSingleton(ldap);
services.AddSingleton(roleMapper);
// ManagementAuthenticator now consults the login throttle before the bind.
services.AddSingleton(TimeProvider.System);
services.AddSingleton<IOptions<SecurityOptions>>(Options.Create(new SecurityOptions()));
services.AddSingleton<LoginThrottle>();
});
web.Configure(app =>
{
@@ -652,6 +656,10 @@ public class AuditEndpointsTests
services.AddSingleton(repo);
services.AddSingleton(ldap);
services.AddSingleton(roleMapper);
// ManagementAuthenticator now consults the login throttle before the bind.
services.AddSingleton(TimeProvider.System);
services.AddSingleton<IOptions<SecurityOptions>>(Options.Create(new SecurityOptions()));
services.AddSingleton<LoginThrottle>();
});
web.Configure(app =>
{
@@ -825,6 +833,10 @@ public class AuditEndpointsTests
services.AddSingleton(repo);
services.AddSingleton(ldap);
services.AddSingleton(roleMapper);
// ManagementAuthenticator now consults the login throttle before the bind.
services.AddSingleton(TimeProvider.System);
services.AddSingleton<IOptions<SecurityOptions>>(Options.Create(new SecurityOptions()));
services.AddSingleton<LoginThrottle>();
});
web.Configure(app =>
{