keycloak-uncached

Merge pull request #197 from patriot1burke/master subsystem

2/5/2014 11:50:41 PM

Details

diff --git a/distribution/as7-adapter-zip/assembly.xml b/distribution/as7-adapter-zip/assembly.xml
index 4caee07..f4b56a1 100755
--- a/distribution/as7-adapter-zip/assembly.xml
+++ b/distribution/as7-adapter-zip/assembly.xml
@@ -11,6 +11,7 @@
             <directory>${project.build.directory}/unpacked</directory>
             <excludes>
                 <exclude>org/keycloak/keycloak-undertow-adapter/**</exclude>
+                <exclude>org/keycloak/keycloak-wildfly-subsystem/**</exclude>
             </excludes>
             <outputDirectory>modules</outputDirectory>
         </fileSet>
diff --git a/distribution/modules/build.xml b/distribution/modules/build.xml
index 4b273e8..8f3b099 100755
--- a/distribution/modules/build.xml
+++ b/distribution/modules/build.xml
@@ -67,6 +67,9 @@
             <maven-resource group="org.keycloak" artifact="keycloak-undertow-adapter"/>
         </module-def>
 
+        <module-def name="org.keycloak.keycloak-wildfly-subsystem">
+            <maven-resource group="org.keycloak" artifact="keycloak-wildfly-subsystem"/>
+        </module-def>
     </target>
 
     <target name="clean-target">
diff --git a/distribution/modules/pom.xml b/distribution/modules/pom.xml
index 35a7436..af567d2 100755
--- a/distribution/modules/pom.xml
+++ b/distribution/modules/pom.xml
@@ -60,6 +60,11 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-wildfly-subsystem</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.bouncycastle</groupId>
             <artifactId>bcprov-jdk16</artifactId>
         </dependency>
diff --git a/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java
old mode 100644
new mode 100755
index 0789e23..40b3ec8
--- a/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java
+++ b/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java
@@ -25,8 +25,10 @@ import org.jboss.as.server.deployment.DeploymentUnitProcessingException;
 import org.jboss.as.server.deployment.DeploymentUnitProcessor;
 import org.jboss.as.server.deployment.Phase;
 import org.jboss.as.web.common.WarMetaData;
+import org.jboss.logging.Logger;
 import org.jboss.metadata.javaee.spec.ParamValueMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.LoginConfigMetaData;
 
 /**
  * Pass authentication data (keycloak.json) as a servlet context param so it can be read by the KeycloakServletExtension.
@@ -34,6 +36,8 @@ import org.jboss.metadata.web.jboss.JBossWebMetaData;
  * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc.
  */
 public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitProcessor {
+    protected Logger log = Logger.getLogger(KeycloakAdapterConfigDeploymentProcessor.class);
+
     // This param name is defined again in Keycloak Undertow Integration class
     // org.keycloak.adapters.undertow.KeycloakServletExtension.  We have this value in
     // two places to avoid dependency between Keycloak Subsystem and Keyclaok Undertow Integration.
@@ -49,7 +53,9 @@ public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitP
         String deploymentName = deploymentUnit.getName();
 
         KeycloakAdapterConfigService service = KeycloakAdapterConfigService.find(phaseContext.getServiceRegistry());
+        //log.info("********* CHECK KEYCLOAK DEPLOYMENT: " + deploymentName);
         if (service.isKeycloakDeployment(deploymentName)) {
+
             addKeycloakAuthData(phaseContext, deploymentName, service);
         }
     }
@@ -59,6 +65,18 @@ public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitP
         WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY);
 
         addJSONData(service.getJSON(deploymentName), warMetaData);
+        JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData();
+        if (webMetaData == null) {
+            webMetaData = new JBossWebMetaData();
+            warMetaData.setMergedJBossWebMetaData(webMetaData);
+        }
+        LoginConfigMetaData loginConfig = webMetaData.getLoginConfig();
+        if (loginConfig == null) {
+            loginConfig = new LoginConfigMetaData();
+            webMetaData.setLoginConfig(loginConfig);
+        }
+        loginConfig.setAuthMethod("KEYCLOAK");
+        loginConfig.setRealmName(service.getRealmName(deploymentName));
     }
 
     private void addJSONData(String json, WarMetaData warMetaData) {
diff --git a/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java b/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java
old mode 100644
new mode 100755
index ffcce76..ad31d60
--- a/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java
+++ b/integration/wildfly-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import org.jboss.as.controller.OperationContext;
 import org.jboss.dmr.ModelNode;
 import org.jboss.dmr.Property;
+import org.jboss.logging.Logger;
 import org.jboss.msc.service.Service;
 import org.jboss.msc.service.ServiceController;
 import org.jboss.msc.service.ServiceName;
@@ -39,6 +40,7 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD
  * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc.
  */
 public final class KeycloakAdapterConfigService implements Service<KeycloakAdapterConfigService> {
+    protected Logger log = Logger.getLogger(KeycloakAdapterConfigService.class);
     private static final String CREDENTIALS_JSON_NAME = "credentials";
 
     // Right now this is used as a service, but I'm not sure it really needs to be implemented that way.
@@ -161,6 +163,12 @@ public final class KeycloakAdapterConfigService implements Service<KeycloakAdapt
         return null;
     }
 
+    public String getRealmName(String deploymentName) {
+        ModelNode deployment = this.deployments.get(deploymentName);
+        return deployment.get(RealmDefinition.TAG_NAME).asString();
+
+    }
+
     public String getJSON(String deploymentName) {
         ModelNode deployment = this.deployments.get(deploymentName);
         String realmName = deployment.get(RealmDefinition.TAG_NAME).asString();
@@ -186,6 +194,8 @@ public final class KeycloakAdapterConfigService implements Service<KeycloakAdapt
     }
 
     public boolean isKeycloakDeployment(String deploymentName) {
+        //log.info("********* CHECK KEYCLOAK DEPLOYMENT: deployments.size()" + deployments.size());
+
         return this.deployments.containsKey(deploymentName);
     }