diff --git a/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/jaas/AbstractKeycloakLoginModule.java b/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/jaas/AbstractKeycloakLoginModule.java
index 8d93fe9..28ef006 100755
--- a/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/jaas/AbstractKeycloakLoginModule.java
+++ b/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/jaas/AbstractKeycloakLoginModule.java
@@ -37,8 +37,12 @@ import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.security.auth.login.LoginException;
import javax.security.auth.spi.LoginModule;
+
+import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.security.Principal;
import java.util.HashSet;
import java.util.Map;
@@ -53,7 +57,7 @@ public abstract class AbstractKeycloakLoginModule implements LoginModule {
public static final String KEYCLOAK_CONFIG_FILE_OPTION = "keycloak-config-file";
public static final String ROLE_PRINCIPAL_CLASS_OPTION = "role-principal-class";
-
+ public static final String PROFILE_RESOURCE = "profile:";
protected Subject subject;
protected CallbackHandler callbackHandler;
protected Auth auth;
@@ -84,14 +88,27 @@ public abstract class AbstractKeycloakLoginModule implements LoginModule {
protected KeycloakDeployment resolveDeployment(String keycloakConfigFile) {
try {
- InputStream is = FindFile.findFile(keycloakConfigFile);
+ InputStream is = null;
+ if (keycloakConfigFile.startsWith(PROFILE_RESOURCE)) {
+ try {
+ is = new URL(keycloakConfigFile).openStream();
+ } catch (MalformedURLException mfue) {
+ throw new RuntimeException(mfue);
+ } catch (IOException ioe) {
+ throw new RuntimeException(ioe);
+ }
+ } else {
+ is = FindFile.findFile(keycloakConfigFile);
+ }
KeycloakDeployment kd = KeycloakDeploymentBuilder.build(is);
return kd;
+
} catch (RuntimeException e) {
getLogger().debug("Unable to find or parse file " + keycloakConfigFile + " due to " + e.getMessage(), e);
throw e;
}
}
+
@Override
public boolean login() throws LoginException {