diff --git a/services/src/main/java/org/keycloak/theme/ResourceLoader.java b/services/src/main/java/org/keycloak/theme/ResourceLoader.java index 6f667d68901..7bb7e40a6d2 100644 --- a/services/src/main/java/org/keycloak/theme/ResourceLoader.java +++ b/services/src/main/java/org/keycloak/theme/ResourceLoader.java @@ -15,7 +15,12 @@ public class ResourceLoader { Path rootPath = Path.of("/", root).normalize().toAbsolutePath(); Path resourcePath = rootPath.resolve(resource).normalize().toAbsolutePath(); if (resourcePath.startsWith(rootPath)) { - URL url = classLoader().getResource(resourcePath.toString().substring(1)); + if (File.separatorChar == '/') { + resource = resourcePath.toString().substring(1); + } else { + resource = resourcePath.toString().substring(2).replace('\\', '/'); + } + URL url = classLoader().getResource(resource); return url != null ? url.openStream() : null; } else { return null; diff --git a/testsuite/integration-arquillian/tests/base/testsuites/jdk-suite b/testsuite/integration-arquillian/tests/base/testsuites/jdk-suite index adc953a1279..9b7150e99b1 100644 --- a/testsuite/integration-arquillian/tests/base/testsuites/jdk-suite +++ b/testsuite/integration-arquillian/tests/base/testsuites/jdk-suite @@ -15,3 +15,4 @@ SSOTest SamlClientTest TransactionsTest X509BrowserLoginTest +ThemeResourceProviderTest