Fix BlacklistPasswordPolicyDefaultPath Failures on Windows
Fixes #11967
This commit is contained in:
parent
bb3b88963b
commit
86f31e8df5
3 changed files with 11 additions and 5 deletions
|
@ -20,6 +20,8 @@ package org.keycloak.quarkus.runtime.policy;
|
||||||
import org.keycloak.policy.BlacklistPasswordPolicyProviderFactory;
|
import org.keycloak.policy.BlacklistPasswordPolicyProviderFactory;
|
||||||
import org.keycloak.quarkus.runtime.Environment;
|
import org.keycloak.quarkus.runtime.Environment;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Quarkus implementation of the BlacklistPasswordPolicyProviderFactory. The
|
* <p>Quarkus implementation of the BlacklistPasswordPolicyProviderFactory. The
|
||||||
* default path for the list files is calculated using the quarkus environment
|
* default path for the list files is calculated using the quarkus environment
|
||||||
|
@ -31,6 +33,6 @@ public class QuarkusBlacklistPasswordPolicyProviderFactory extends BlacklistPass
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDefaultBlacklistsBasePath() {
|
public String getDefaultBlacklistsBasePath() {
|
||||||
return Environment.getDataDir() + "/" + PASSWORD_BLACKLISTS_FOLDER;
|
return Environment.getDataDir() + File.separator + PASSWORD_BLACKLISTS_FOLDER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import org.keycloak.models.KeycloakSession;
|
||||||
import org.keycloak.models.KeycloakSessionFactory;
|
import org.keycloak.models.KeycloakSessionFactory;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
@ -75,7 +76,7 @@ public class BlacklistPasswordPolicyProviderFactory implements PasswordPolicyPro
|
||||||
|
|
||||||
public static final String JBOSS_SERVER_DATA_DIR = "jboss.server.data.dir";
|
public static final String JBOSS_SERVER_DATA_DIR = "jboss.server.data.dir";
|
||||||
|
|
||||||
public static final String PASSWORD_BLACKLISTS_FOLDER = "password-blacklists/";
|
public static final String PASSWORD_BLACKLISTS_FOLDER = "password-blacklists" + File.separator;
|
||||||
|
|
||||||
private ConcurrentMap<String, FileBasedPasswordBlacklist> blacklistRegistry = new ConcurrentHashMap<>();
|
private ConcurrentMap<String, FileBasedPasswordBlacklist> blacklistRegistry = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
@ -142,7 +143,7 @@ public class BlacklistPasswordPolicyProviderFactory implements PasswordPolicyPro
|
||||||
* when no other configuration is in place.
|
* when no other configuration is in place.
|
||||||
*/
|
*/
|
||||||
public String getDefaultBlacklistsBasePath() {
|
public String getDefaultBlacklistsBasePath() {
|
||||||
return System.getProperty(JBOSS_SERVER_DATA_DIR) + "/" + PASSWORD_BLACKLISTS_FOLDER;
|
return System.getProperty(JBOSS_SERVER_DATA_DIR) + File.separator + PASSWORD_BLACKLISTS_FOLDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -35,6 +35,7 @@ import org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.A
|
||||||
import org.keycloak.testsuite.util.ContainerAssume;
|
import org.keycloak.testsuite.util.ContainerAssume;
|
||||||
import org.keycloak.testsuite.util.RealmBuilder;
|
import org.keycloak.testsuite.util.RealmBuilder;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
|
@ -192,12 +193,14 @@ public class PasswordPolicyTest extends AbstractKeycloakTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBlacklistPasswordPolicyDefaultPath() throws Exception {
|
public void testBlacklistPasswordPolicyDefaultPath() throws Exception {
|
||||||
|
final String SEPARATOR = File.separator;
|
||||||
|
|
||||||
testingClient.server("passwordPolicy").run(session -> {
|
testingClient.server("passwordPolicy").run(session -> {
|
||||||
ProviderFactory<PasswordPolicyProvider> passPolicyFact = session.getKeycloakSessionFactory().getProviderFactory(
|
ProviderFactory<PasswordPolicyProvider> passPolicyFact = session.getKeycloakSessionFactory().getProviderFactory(
|
||||||
PasswordPolicyProvider.class, BlacklistPasswordPolicyProviderFactory.ID);
|
PasswordPolicyProvider.class, BlacklistPasswordPolicyProviderFactory.ID);
|
||||||
assertThat(passPolicyFact, instanceOf(BlacklistPasswordPolicyProviderFactory.class));
|
assertThat(passPolicyFact, instanceOf(BlacklistPasswordPolicyProviderFactory.class));
|
||||||
assertThat(((BlacklistPasswordPolicyProviderFactory)passPolicyFact).getDefaultBlacklistsBasePath(),
|
assertThat(((BlacklistPasswordPolicyProviderFactory) passPolicyFact).getDefaultBlacklistsBasePath(),
|
||||||
endsWith("/data/password-blacklists/"));
|
endsWith(SEPARATOR + "data" + SEPARATOR + "password-blacklists" + SEPARATOR));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue