Package org.keycloak.services.managers
Class DefaultBruteForceProtector
- java.lang.Object
-
- org.keycloak.services.managers.DefaultBruteForceProtector
-
- All Implemented Interfaces:
Runnable,org.keycloak.provider.Provider,org.keycloak.services.managers.BruteForceProtector
public class DefaultBruteForceProtector extends Object implements Runnable, org.keycloak.services.managers.BruteForceProtector
A single thread will log failures. This is so that we can avoid concurrent writes as we want an accurate failure count- Version:
- $Revision: 1 $
- Author:
- Bill Burke
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classDefaultBruteForceProtector.FailedLoginprotected classDefaultBruteForceProtector.LoginEventprotected classDefaultBruteForceProtector.ShutdownEventprotected classDefaultBruteForceProtector.SuccessfulLogin
-
Field Summary
Fields Modifier and Type Field Description protected org.keycloak.models.KeycloakSessionFactoryfactoryprotected longfailuresprotected longlastFailureprotected intmaxDeltaTimeSecondsprotected LinkedBlockingQueue<DefaultBruteForceProtector.LoginEvent>queueprotected booleanrunprotected CountDownLatchshutdownLatchprotected longtotalTimestatic intTRANSACTION_SIZE
-
Constructor Summary
Constructors Constructor Description DefaultBruteForceProtector(org.keycloak.models.KeycloakSessionFactory factory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcleanUpPermanentLockout(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user)voidclose()voidfailedLogin(org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user, org.keycloak.common.ClientConnection clientConnection)protected voidfailure(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)protected org.keycloak.models.RealmModelgetRealmModel(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)protected org.keycloak.models.UserLoginFailureModelgetUserModel(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)booleanisPermanentlyLockedOut(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user)booleanisTemporarilyDisabled(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user)protected voidlogFailure(DefaultBruteForceProtector.LoginEvent event)voidrun()voidshutdown()voidstart()protected voidsuccess(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)voidsuccessfulLogin(org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user, org.keycloak.common.ClientConnection clientConnection)
-
-
-
Field Detail
-
run
protected volatile boolean run
-
maxDeltaTimeSeconds
protected int maxDeltaTimeSeconds
-
factory
protected org.keycloak.models.KeycloakSessionFactory factory
-
shutdownLatch
protected CountDownLatch shutdownLatch
-
failures
protected volatile long failures
-
lastFailure
protected volatile long lastFailure
-
totalTime
protected volatile long totalTime
-
queue
protected LinkedBlockingQueue<DefaultBruteForceProtector.LoginEvent> queue
-
TRANSACTION_SIZE
public static final int TRANSACTION_SIZE
- See Also:
- Constant Field Values
-
-
Method Detail
-
failure
protected void failure(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)
-
getUserModel
protected org.keycloak.models.UserLoginFailureModel getUserModel(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)
-
getRealmModel
protected org.keycloak.models.RealmModel getRealmModel(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)
-
start
public void start()
-
shutdown
public void shutdown()
-
success
protected void success(org.keycloak.models.KeycloakSession session, DefaultBruteForceProtector.LoginEvent event)
-
logFailure
protected void logFailure(DefaultBruteForceProtector.LoginEvent event)
-
failedLogin
public void failedLogin(org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user, org.keycloak.common.ClientConnection clientConnection)- Specified by:
failedLoginin interfaceorg.keycloak.services.managers.BruteForceProtector
-
successfulLogin
public void successfulLogin(org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user, org.keycloak.common.ClientConnection clientConnection)- Specified by:
successfulLoginin interfaceorg.keycloak.services.managers.BruteForceProtector
-
isTemporarilyDisabled
public boolean isTemporarilyDisabled(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user)- Specified by:
isTemporarilyDisabledin interfaceorg.keycloak.services.managers.BruteForceProtector
-
isPermanentlyLockedOut
public boolean isPermanentlyLockedOut(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user)- Specified by:
isPermanentlyLockedOutin interfaceorg.keycloak.services.managers.BruteForceProtector
-
cleanUpPermanentLockout
public void cleanUpPermanentLockout(org.keycloak.models.KeycloakSession session, org.keycloak.models.RealmModel realm, org.keycloak.models.UserModel user)- Specified by:
cleanUpPermanentLockoutin interfaceorg.keycloak.services.managers.BruteForceProtector
-
close
public void close()
- Specified by:
closein interfaceorg.keycloak.provider.Provider
-
-