Class BlacklistPasswordPolicyProviderFactory
- All Implemented Interfaces:
PasswordPolicyProviderFactory,ProviderFactory<PasswordPolicyProvider>
BlacklistPasswordPolicyProvider instances.
Password blacklists are simple text files where every line is a blacklisted password delimited by a newline character \n.
Blacklists can be configured via the Authentication: Password Policy section in the admin-console. A blacklist-file is referred to by its name in the policy configuration.
Blacklist location
Users can provide custom blacklists by adding a blacklist password file to the configured blacklist folder.
The location of the password-blacklists folder is derived as follows
- the value of the System property
keycloak.password.blacklists.pathif configured - fails if folder is missing - the value of the SPI config property:
blacklistsPathwhen explicitly configured - fails if folder is missing - otherwise
$KC_HOME/data/password-blacklists/if nothing else is configured
--spi-password-policy-password-blacklist-blacklists-path=/path/to/blacklistsFolder
Note that the preferred way for configuration is to copy the password file to the $KC_HOME/data/password-blacklists/ folder
A password blacklist with the filename 10_million_passwords.txt
that is located beneath $KC_HOME/data/keycloak/blacklists/ can be referred to as 10_million_passwords.txt in the Authentication: Password Policy configuration.
False positives
The current implementation uses a probabilistic data-structure called BloomFilter which allows for fast and memory efficient containment checks, e.g. whether a given password is contained in a blacklist,
with the possibility for false positives. By default a false positive probability DEFAULT_FALSE_POSITIVE_PROBABILITY is used.
To change the false positive probability via CLI configuration use --spi-password-policy-password-blacklist-false-positive-probability=0.00001
- Author:
- Thomas Darimont
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classABlacklistPasswordPolicyProviderFactory.FileBasedPasswordBlacklistuses password-blacklist files as to construct aBlacklistPasswordPolicyProviderFactory.PasswordBlacklist.static interfaceABlacklistPasswordPolicyProviderFactory.PasswordBlacklistdescribes a list of too easy to guess or potentially leaked passwords that users should not be able to use. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()create(KeycloakSession session) Method to obtain the default location for the list folder.protected doublegetId()voidinit(Config.Scope config) booleanvoidpostInit(KeycloakSessionFactory factory) resolvePasswordBlacklist(String blacklistName) Resolves and potentially registers aBlacklistPasswordPolicyProviderFactory.PasswordBlacklistfor the givenblacklistName.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.keycloak.provider.ProviderFactory
getConfigMetadata, order
-
Field Details
-
ID
- See Also:
-
SYSTEM_PROPERTY
- See Also:
-
BLACKLISTS_PATH_PROPERTY
- See Also:
-
BLACKLISTS_FALSE_POSITIVE_PROBABILITY_PROPERTY
- See Also:
-
DEFAULT_FALSE_POSITIVE_PROBABILITY
public static final double DEFAULT_FALSE_POSITIVE_PROBABILITY- See Also:
-
JBOSS_SERVER_DATA_DIR
- See Also:
-
PASSWORD_BLACKLISTS_FOLDER
-
-
Constructor Details
-
BlacklistPasswordPolicyProviderFactory
public BlacklistPasswordPolicyProviderFactory()
-
-
Method Details
-
create
- Specified by:
createin interfaceProviderFactory<PasswordPolicyProvider>
-
init
- Specified by:
initin interfaceProviderFactory<PasswordPolicyProvider>
-
postInit
- Specified by:
postInitin interfaceProviderFactory<PasswordPolicyProvider>
-
close
public void close()- Specified by:
closein interfaceProviderFactory<PasswordPolicyProvider>
-
getDisplayName
- Specified by:
getDisplayNamein interfacePasswordPolicyProviderFactory
-
getConfigType
- Specified by:
getConfigTypein interfacePasswordPolicyProviderFactory
-
getDefaultConfigValue
- Specified by:
getDefaultConfigValuein interfacePasswordPolicyProviderFactory
-
isMultiplSupported
public boolean isMultiplSupported()- Specified by:
isMultiplSupportedin interfacePasswordPolicyProviderFactory
-
getId
- Specified by:
getIdin interfaceProviderFactory<PasswordPolicyProvider>
-
getDefaultBlacklistsBasePath
Method to obtain the default location for the list folder. The method will return the data directory of the Keycloak instance concatenated with /password-blacklists/.- Returns:
- The default path used by the provider to lookup the lists when no other configuration is in place.
-
resolvePasswordBlacklist
public BlacklistPasswordPolicyProviderFactory.PasswordBlacklist resolvePasswordBlacklist(String blacklistName) Resolves and potentially registers aBlacklistPasswordPolicyProviderFactory.PasswordBlacklistfor the givenblacklistName.- Parameters:
blacklistName-- Returns:
-
getFalsePositiveProbability
protected double getFalsePositiveProbability()
-