Interface AbuseDetectionService
- All Known Implementing Classes:
InMemoryAbuseDetectionService
Two-call flow
Callers ask evaluate(AbuseAttemptContext) before performing the
credential operation. The decision says whether the call may
proceed, must wait, must hit a step-up check, or must be blocked.
After the credential operation completes (success or failure), the
caller hands the outcome back through recordOutcome(AbuseAttemptContext, AttemptOutcome) so the
counters update.
Cluster note
The in-memory reference implementation
(InMemoryAbuseDetectionService) keeps state on the JVM heap
— multi-node deployments must replace it with a clustered store
(Redis, Hazelcast, Postgres) so a coordinated attack cannot dodge
the limits by hopping nodes. The Konzept §13 calls this out as a
production requirement.
No leak
Decisions stay generic; exact counters and per-dimension specifics never reach the perimeter (CWE-203 / CWE-307).
-
Method Summary
Modifier and TypeMethodDescriptionevaluate(AbuseAttemptContext context) Decides what reaction the caller should apply before running the credential operation.voidrecordOutcome(AbuseAttemptContext context, AttemptOutcome outcome) Records the outcome of the operation so the counters can update.
-
Method Details
-
evaluate
Decides what reaction the caller should apply before running the credential operation. -
recordOutcome
Records the outcome of the operation so the counters can update. Successful logins typically reset the per-username failure counter; volume counters (CLIENT_ADDRESS / TENANT / GLOBAL) usually keep tracking irrespective of outcome.
-