Class 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
    • Field Detail

      • run

        protected volatile boolean run
      • maxDeltaTimeSeconds

        protected int maxDeltaTimeSeconds
      • factory

        protected org.keycloak.models.KeycloakSessionFactory factory
      • failures

        protected volatile long failures
      • lastFailure

        protected volatile long lastFailure
      • totalTime

        protected volatile long totalTime
    • Constructor Detail

      • DefaultBruteForceProtector

        public DefaultBruteForceProtector​(org.keycloak.models.KeycloakSessionFactory factory)
    • Method Detail

      • start

        public void start()
      • shutdown

        public void shutdown()
      • run

        public void run()
        Specified by:
        run in interface Runnable
      • failedLogin

        public void failedLogin​(org.keycloak.models.RealmModel realm,
                                org.keycloak.models.UserModel user,
                                org.keycloak.common.ClientConnection clientConnection)
        Specified by:
        failedLogin in interface org.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:
        successfulLogin in interface org.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:
        isTemporarilyDisabled in interface org.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:
        isPermanentlyLockedOut in interface org.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:
        cleanUpPermanentLockout in interface org.keycloak.services.managers.BruteForceProtector
      • close

        public void close()
        Specified by:
        close in interface org.keycloak.provider.Provider