Class StorageBackedAccountLockoutManager

    • Field Detail

      • log

        @Nonnull
        private org.slf4j.Logger log
        Class logger.
      • extendLockoutDuration

        private boolean extendLockoutDuration
        Controls whether attempts against locked accounts extend duration.
    • Constructor Detail

      • StorageBackedAccountLockoutManager

        public StorageBackedAccountLockoutManager()
        Constructor.
    • Method Detail

      • setStorageService

        public void setStorageService​(@Nonnull
                                      StorageService storage)
        Set the StorageService back-end to use.
        Parameters:
        storage - the back-end to use
      • setLockoutKeyStrategy

        public void setLockoutKeyStrategy​(@Nonnull
                                          Function<ProfileRequestContext,​String> strategy)
        Set the strategy function to compute the account lockout key.

        Defaults to a concatenation of the username and client address.

        Parameters:
        strategy - strategy function
      • setMaxAttempts

        public void setMaxAttempts​(@Positive
                                   int attempts)
        Set the maximum failed attempts within window.

        Defaults to 5.

        Parameters:
        attempts - maximum failed attempts
      • setMaxAttemptsLookupStrategy

        public void setMaxAttemptsLookupStrategy​(@Nonnull
                                                 Function<ProfileRequestContext,​Integer> strategy)
        Set lookup function for maximum failed attempts within window.

        The function MUST return a positive value.

        Parameters:
        strategy - lookup function
      • setCounterInterval

        public void setCounterInterval​(@Nonnull
                                       Duration window)
        Set interval after which counter is reset.

        Defaults to 5 minutes.

        Parameters:
        window - counter window
      • setCounterIntervalLookupStrategy

        public void setCounterIntervalLookupStrategy​(@Nonnull
                                                     Function<ProfileRequestContext,​Duration> strategy)
        Set lookup function for interval after which counter is reset.

        The function MUST return a positive value.

        Parameters:
        strategy - lookup function
      • setLockoutDuration

        public void setLockoutDuration​(@Nonnull
                                       Duration duration)
        Set lockout duration.

        Defaults to 5 minutes.

        Parameters:
        duration - lockout duration
      • setLockoutDurationLookupStrategy

        public void setLockoutDurationLookupStrategy​(@Nonnull
                                                     Function<ProfileRequestContext,​Duration> strategy)
        Set lookup function for lockout duration.

        The function MUST return a positive value. Use a large value for permanent lockout.

        Parameters:
        strategy - lookup function
      • setExtendLockoutDuration

        public void setExtendLockoutDuration​(boolean flag)
        Set whether to extend the lockout duration on attempts during lockout.
        Parameters:
        flag - flag to set
      • doIncrement

        protected boolean doIncrement​(@Nonnull
                                      ProfileRequestContext profileRequestContext,
                                      @Nonnull @NotEmpty
                                      String key,
                                      int retries)
        Implement invalid login attempt counter via storage service, retrying as necessary.
        Parameters:
        profileRequestContext - current profile request context
        key - account lockout key
        retries - number of additional retries to allow
        Returns:
        true iff successful