diff --git a/distribution/adapters/as7-adapter-zip/assembly.xml b/distribution/adapters/as7-adapter/as7-adapter-zip/assembly.xml similarity index 93% rename from distribution/adapters/as7-adapter-zip/assembly.xml rename to distribution/adapters/as7-adapter/as7-adapter-zip/assembly.xml index 7c141ff108..814a591b83 100755 --- a/distribution/adapters/as7-adapter-zip/assembly.xml +++ b/distribution/adapters/as7-adapter/as7-adapter-zip/assembly.xml @@ -1,29 +1,30 @@ - - war-dist - - - zip - tar.gz - - false - - - - ${project.build.directory}/unpacked - - org/bouncycastle/** - net/iharder/base64/** - org/apache/httpcomponents/** - org/keycloak/keycloak-core/** - org/keycloak/keycloak-adapter-core/** - org/keycloak/keycloak-jboss-adapter-core/** - org/keycloak/keycloak-as7-adapter/** - org/keycloak/keycloak-as7-subsystem/** - - - **/*.war - - modules - - - + + war-dist + + + zip + tar.gz + + false + + + + ${project.build.directory}/unpacked + + org/bouncycastle/** + net/iharder/base64/** + org/apache/httpcomponents/** + org/keycloak/keycloak-core/** + org/keycloak/keycloak-adapter-core/** + org/keycloak/keycloak-jboss-adapter-core/** + org/keycloak/keycloak-as7-adapter/** + org/keycloak/keycloak-as7-subsystem/** + org/keycloak/keycloak-adapter-subsystem/** + + + **/*.war + + modules + + + diff --git a/distribution/adapters/as7-adapter-zip/pom.xml b/distribution/adapters/as7-adapter/as7-adapter-zip/pom.xml similarity index 93% rename from distribution/adapters/as7-adapter-zip/pom.xml rename to distribution/adapters/as7-adapter/as7-adapter-zip/pom.xml index 7a5921d215..7a3c6c57c0 100755 --- a/distribution/adapters/as7-adapter-zip/pom.xml +++ b/distribution/adapters/as7-adapter/as7-adapter-zip/pom.xml @@ -1,79 +1,79 @@ - - 4.0.0 - - keycloak-parent - org.keycloak - 1.3.0.Final-SNAPSHOT - ../../../pom.xml - - - keycloak-as7-adapter-dist - pom - Keycloak AS7 Adapter Distro - - - - - org.keycloak - keycloak-as7-adapter - - - org.keycloak - keycloak-jboss-modules - zip - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - unpack - prepare-package - - unpack - - - - - org.keycloak - keycloak-jboss-modules - zip - ${project.build.directory}/unpacked - - - - - - - - maven-assembly-plugin - - - assemble - package - - single - - - - assembly.xml - - - target - - - target/assembly/work - - false - - - - - - - - + + 4.0.0 + + keycloak-parent + org.keycloak + 1.3.0.Final-SNAPSHOT + ../../../pom.xml + + + keycloak-as7-adapter-dist + pom + Keycloak AS7 Adapter Distro + + + + + org.keycloak + keycloak-as7-adapter + + + org.keycloak + keycloak-as7-modules + zip + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + unpack + prepare-package + + unpack + + + + + org.keycloak + keycloak-as7-modules + zip + ${project.build.directory}/unpacked + + + + + + + + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + + target + + + target/assembly/work + + false + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/assembly.xml b/distribution/adapters/as7-adapter/as7-modules/assembly.xml new file mode 100755 index 0000000000..4a34435ac4 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/assembly.xml @@ -0,0 +1,22 @@ + + dist + + + zip + + false + + + + ../../ + + License.html + + + + + ${project.build.directory}/modules + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/build.xml b/distribution/adapters/as7-adapter/as7-modules/build.xml new file mode 100755 index 0000000000..d4b4bebd20 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/build.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/lib.xml b/distribution/adapters/as7-adapter/as7-modules/lib.xml new file mode 100755 index 0000000000..3d9438a4a4 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/lib.xml @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "; + project.setProperty("current.maven.root", root); + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "; + if(path.indexOf('${') != -1) { + throw "Module resource root not found, make sure it is listed in build/pom.xml" + path; + } + if(attributes.get("jandex") == "true" ) { + root = root + "\n\t"; + } + project.setProperty("current.resource.root", root); + ]]> + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/pom.xml b/distribution/adapters/as7-adapter/as7-modules/pom.xml new file mode 100755 index 0000000000..cfa6302945 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/pom.xml @@ -0,0 +1,172 @@ + + + + 4.0.0 + + + keycloak-parent + org.keycloak + 1.3.0.Final-SNAPSHOT + ../../../../pom.xml + + + keycloak-as7-modules + + Keycloak JBoss AS 7 Modules + pom + + + org.keycloak + keycloak-core + + + org.keycloak + keycloak-adapter-core + + + org.keycloak + keycloak-jboss-adapter-core + + + org.keycloak + keycloak-as7-adapter + + + org.keycloak + keycloak-tomcat-core-adapter + + + org.keycloak + keycloak-as7-subsystem + + + org.apache.httpcomponents + httpmime + + + org.apache.httpcomponents + httpcore + + + net.iharder + base64 + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.crypto.version} + + + org.bouncycastle + bcpkix-jdk15on + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + false + + + build-dist + + run + + compile + + + + + + + + + + + + org.jboss + jandex + 1.0.3.Final + + + ant-contrib + ant-contrib + 1.0b3 + + + ant + ant + + + + + org.apache.ant + ant-apache-bsf + 1.9.3 + + + org.apache.bsf + bsf-api + 3.1 + + + rhino + js + 1.7R2 + + + + + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + + target + + + target/assembly/work + + false + + + + + + org.apache.maven.plugins + maven-resources-plugin + + + copy-resources + + validate + + copy-resources + + + ${project.build.directory}/modules/org/keycloak/keycloak-adapter-subsystem + + + src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem + true + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/net/iharder/base64/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/net/iharder/base64/main/module.xml new file mode 100755 index 0000000000..c99b96879b --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/net/iharder/base64/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/apache/httpcomponents/4.3/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/apache/httpcomponents/4.3/module.xml new file mode 100644 index 0000000000..a3e65f8dd0 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/apache/httpcomponents/4.3/module.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/bouncycastle/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/bouncycastle/main/module.xml new file mode 100644 index 0000000000..d8fcf474cb --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/bouncycastle/main/module.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml new file mode 100755 index 0000000000..1be1486fe2 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml new file mode 100755 index 0000000000..06a24fe02d --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml new file mode 100755 index 0000000000..b5df10afb2 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml new file mode 100755 index 0000000000..50f423478d --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml new file mode 100755 index 0000000000..545f16847c --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml new file mode 100755 index 0000000000..beac07bac7 --- /dev/null +++ b/distribution/adapters/as7-adapter/as7-modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/adapters/as7-adapter/pom.xml b/distribution/adapters/as7-adapter/pom.xml new file mode 100644 index 0000000000..b7759d7af4 --- /dev/null +++ b/distribution/adapters/as7-adapter/pom.xml @@ -0,0 +1,20 @@ + + + keycloak-parent + org.keycloak + 1.3.0.Final-SNAPSHOT + ../../../pom.xml + + Keycloak JBoss AS 7 Adapter + + 4.0.0 + + keycloak-as7-adapter-dist-pom + pom + + + as7-modules + as7-adapter-zip + + diff --git a/distribution/adapters/pom.xml b/distribution/adapters/pom.xml index 8c13893c61..376de00bfd 100755 --- a/distribution/adapters/pom.xml +++ b/distribution/adapters/pom.xml @@ -27,7 +27,7 @@ - as7-adapter-zip + as7-adapter eap6-adapter-zip jetty81-adapter-zip jetty91-adapter-zip diff --git a/integration/as7-eap6/adapter/pom.xml b/integration/as7-eap6/as7-adapter/pom.xml similarity index 97% rename from integration/as7-eap6/adapter/pom.xml rename to integration/as7-eap6/as7-adapter/pom.xml index e84c60f629..fcba0a0a90 100755 --- a/integration/as7-eap6/adapter/pom.xml +++ b/integration/as7-eap6/as7-adapter/pom.xml @@ -1,113 +1,113 @@ - - - - keycloak-parent - org.keycloak - 1.3.0.Final-SNAPSHOT - ../../../pom.xml - - 4.0.0 - - keycloak-as7-adapter - Keycloak AS7 Integration - - - - - org.keycloak - keycloak-core - - - org.keycloak - keycloak-adapter-core - - - org.keycloak - keycloak-jboss-adapter-core - - - org.apache.httpcomponents - httpclient - - - net.iharder - base64 - - - org.bouncycastle - bcprov-jdk15on - - - org.codehaus.jackson - jackson-core-asl - - - org.codehaus.jackson - jackson-mapper-asl - - - org.codehaus.jackson - jackson-xc - - - org.jboss.spec.javax.servlet - jboss-servlet-api_3.0_spec - provided - - - org.jboss.logging - jboss-logging - ${jboss.logging.version} - provided - - - org.jboss.web - jbossweb - 7.0.17.Final - provided - - - org.jboss.as - jboss-as-web - 7.1.2.Final - provided - - - org.keycloak - keycloak-tomcat-core-adapter - - - org.apache.tomcat - tomcat-servlet-api - - - org.apache.tomcat - tomcat-catalina - - - org.apache.tomcat - catalina - - - - - junit - junit - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven.compiler.source} - ${maven.compiler.target} - - - - - - + + + + keycloak-parent + org.keycloak + 1.3.0.Final-SNAPSHOT + ../../../pom.xml + + 4.0.0 + + keycloak-as7-adapter + Keycloak AS7 Integration + + + + + org.keycloak + keycloak-core + + + org.keycloak + keycloak-adapter-core + + + org.keycloak + keycloak-jboss-adapter-core + + + org.apache.httpcomponents + httpclient + + + net.iharder + base64 + + + org.bouncycastle + bcprov-jdk15on + + + org.codehaus.jackson + jackson-core-asl + + + org.codehaus.jackson + jackson-mapper-asl + + + org.codehaus.jackson + jackson-xc + + + org.jboss.spec.javax.servlet + jboss-servlet-api_3.0_spec + provided + + + org.jboss.logging + jboss-logging + ${jboss.logging.version} + provided + + + org.jboss.web + jbossweb + 7.0.17.Final + provided + + + org.jboss.as + jboss-as-web + 7.1.2.Final + provided + + + org.keycloak + keycloak-tomcat-core-adapter + + + org.apache.tomcat + tomcat-servlet-api + + + org.apache.tomcat + tomcat-catalina + + + org.apache.tomcat + catalina + + + + + junit + junit + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + diff --git a/integration/as7-eap6/adapter/src/main/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactory.java b/integration/as7-eap6/as7-adapter/src/main/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactory.java similarity index 97% rename from integration/as7-eap6/adapter/src/main/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactory.java rename to integration/as7-eap6/as7-adapter/src/main/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactory.java index 1b01b75285..8bc50c92e9 100755 --- a/integration/as7-eap6/adapter/src/main/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactory.java +++ b/integration/as7-eap6/as7-adapter/src/main/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactory.java @@ -1,174 +1,174 @@ -package org.keycloak.adapters.jbossweb; - -import org.apache.catalina.Realm; -import org.apache.catalina.realm.GenericPrincipal; -import org.jboss.as.web.security.JBossGenericPrincipal; -import org.jboss.security.NestableGroup; -import org.jboss.security.SecurityConstants; -import org.jboss.security.SecurityContext; -import org.jboss.security.SecurityContextAssociation; -import org.jboss.security.SimpleGroup; -import org.jboss.security.SimplePrincipal; -import org.keycloak.KeycloakSecurityContext; -import org.keycloak.adapters.KeycloakAccount; -import org.keycloak.adapters.tomcat.GenericPrincipalFactory; - -import javax.security.auth.Subject; -import java.lang.reflect.Constructor; -import java.security.Principal; -import java.security.acl.Group; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -/** - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class JBossWebPrincipalFactory extends GenericPrincipalFactory { - - private static Constructor jbossWebPrincipalConstructor = findJBossGenericPrincipalConstructor(); - - @Override - protected GenericPrincipal createPrincipal(Principal userPrincipal, List roles) { - return null; - } - - @Override - public GenericPrincipal createPrincipal(Realm realm, final Principal identity, final Set roleSet, final KeycloakSecurityContext securityContext) { - KeycloakAccount account = new KeycloakAccount() { - @Override - public Principal getPrincipal() { - return identity; - } - - @Override - public Set getRoles() { - return roleSet; - } - - @Override - public KeycloakSecurityContext getKeycloakSecurityContext() { - return securityContext; - } - }; - Subject subject = new Subject(); - Set principals = subject.getPrincipals(); - principals.add(identity); - Group[] roleSets = getRoleSets(roleSet); - for (int g = 0; g < roleSets.length; g++) { - Group group = roleSets[g]; - String name = group.getName(); - Group subjectGroup = createGroup(name, principals); - if (subjectGroup instanceof NestableGroup) { - /* A NestableGroup only allows Groups to be added to it so we - need to add a SimpleGroup to subjectRoles to contain the roles - */ - SimpleGroup tmp = new SimpleGroup("Roles"); - subjectGroup.addMember(tmp); - subjectGroup = tmp; - } - // Copy the group members to the Subject group - Enumeration members = group.members(); - while (members.hasMoreElements()) { - Principal role = (Principal) members.nextElement(); - subjectGroup.addMember(role); - } - } - // add the CallerPrincipal group if none has been added in getRoleSets - Group callerGroup = new SimpleGroup(SecurityConstants.CALLER_PRINCIPAL_GROUP); - callerGroup.addMember(identity); - principals.add(callerGroup); - SecurityContext sc = SecurityContextAssociation.getSecurityContext(); - Principal userPrincipal = getPrincipal(subject); - sc.getUtil().createSubjectInfo(userPrincipal, account, subject); - List rolesAsStringList = new ArrayList(); - rolesAsStringList.addAll(roleSet); - - try { - return (GenericPrincipal) jbossWebPrincipalConstructor.newInstance(realm, userPrincipal.getName(), null, rolesAsStringList, userPrincipal, null, account, null, subject); - } catch (Throwable t) { - throw new RuntimeException("Failed to create JBossGenericPrincipal", t); - } - } - - /** - * Get the Principal given the authenticated Subject. Currently the first subject that is not of type {@code Group} is - * considered or the single subject inside the CallerPrincipal group. - * - * @param subject - * @return the authenticated subject - */ - protected Principal getPrincipal(Subject subject) { - Principal principal = null; - Principal callerPrincipal = null; - if (subject != null) { - Set principals = subject.getPrincipals(); - if (principals != null && !principals.isEmpty()) { - for (Principal p : principals) { - if (!(p instanceof Group) && principal == null) { - principal = p; - } - if (p instanceof Group) { - Group g = Group.class.cast(p); - if (g.getName().equals(SecurityConstants.CALLER_PRINCIPAL_GROUP) && callerPrincipal == null) { - Enumeration e = g.members(); - if (e.hasMoreElements()) - callerPrincipal = e.nextElement(); - } - } - } - } - } - return callerPrincipal == null ? principal : callerPrincipal; - } - - protected Group createGroup(String name, Set principals) { - Group roles = null; - Iterator iter = principals.iterator(); - while (iter.hasNext()) { - Object next = iter.next(); - if ((next instanceof Group) == false) - continue; - Group grp = (Group) next; - if (grp.getName().equals(name)) { - roles = grp; - break; - } - } - // If we did not find a group create one - if (roles == null) { - roles = new SimpleGroup(name); - principals.add(roles); - } - return roles; - } - - protected Group[] getRoleSets(Collection roleSet) { - SimpleGroup roles = new SimpleGroup("Roles"); - Group[] roleSets = {roles}; - for (String role : roleSet) { - roles.addMember(new SimplePrincipal(role)); - } - return roleSets; - } - - static Constructor findJBossGenericPrincipalConstructor() { - for (Constructor c : JBossGenericPrincipal.class.getConstructors()) { - if (c.getParameterTypes().length == 9 && - c.getParameterTypes()[0].equals(Realm.class) && - c.getParameterTypes()[1].equals(String.class) && - c.getParameterTypes()[3].equals(List.class) && - c.getParameterTypes()[4].equals(Principal.class) && - c.getParameterTypes()[6].equals(Object.class) && - c.getParameterTypes()[8].equals(Subject.class)) { - return c; - } - } - return null; - } - -} +package org.keycloak.adapters.jbossweb; + +import org.apache.catalina.Realm; +import org.apache.catalina.realm.GenericPrincipal; +import org.jboss.as.web.security.JBossGenericPrincipal; +import org.jboss.security.NestableGroup; +import org.jboss.security.SecurityConstants; +import org.jboss.security.SecurityContext; +import org.jboss.security.SecurityContextAssociation; +import org.jboss.security.SimpleGroup; +import org.jboss.security.SimplePrincipal; +import org.keycloak.KeycloakSecurityContext; +import org.keycloak.adapters.KeycloakAccount; +import org.keycloak.adapters.tomcat.GenericPrincipalFactory; + +import javax.security.auth.Subject; +import java.lang.reflect.Constructor; +import java.security.Principal; +import java.security.acl.Group; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +/** + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class JBossWebPrincipalFactory extends GenericPrincipalFactory { + + private static Constructor jbossWebPrincipalConstructor = findJBossGenericPrincipalConstructor(); + + @Override + protected GenericPrincipal createPrincipal(Principal userPrincipal, List roles) { + return null; + } + + @Override + public GenericPrincipal createPrincipal(Realm realm, final Principal identity, final Set roleSet, final KeycloakSecurityContext securityContext) { + KeycloakAccount account = new KeycloakAccount() { + @Override + public Principal getPrincipal() { + return identity; + } + + @Override + public Set getRoles() { + return roleSet; + } + + @Override + public KeycloakSecurityContext getKeycloakSecurityContext() { + return securityContext; + } + }; + Subject subject = new Subject(); + Set principals = subject.getPrincipals(); + principals.add(identity); + Group[] roleSets = getRoleSets(roleSet); + for (int g = 0; g < roleSets.length; g++) { + Group group = roleSets[g]; + String name = group.getName(); + Group subjectGroup = createGroup(name, principals); + if (subjectGroup instanceof NestableGroup) { + /* A NestableGroup only allows Groups to be added to it so we + need to add a SimpleGroup to subjectRoles to contain the roles + */ + SimpleGroup tmp = new SimpleGroup("Roles"); + subjectGroup.addMember(tmp); + subjectGroup = tmp; + } + // Copy the group members to the Subject group + Enumeration members = group.members(); + while (members.hasMoreElements()) { + Principal role = (Principal) members.nextElement(); + subjectGroup.addMember(role); + } + } + // add the CallerPrincipal group if none has been added in getRoleSets + Group callerGroup = new SimpleGroup(SecurityConstants.CALLER_PRINCIPAL_GROUP); + callerGroup.addMember(identity); + principals.add(callerGroup); + SecurityContext sc = SecurityContextAssociation.getSecurityContext(); + Principal userPrincipal = getPrincipal(subject); + sc.getUtil().createSubjectInfo(userPrincipal, account, subject); + List rolesAsStringList = new ArrayList(); + rolesAsStringList.addAll(roleSet); + + try { + return (GenericPrincipal) jbossWebPrincipalConstructor.newInstance(realm, userPrincipal.getName(), null, rolesAsStringList, userPrincipal, null, account, null, subject); + } catch (Throwable t) { + throw new RuntimeException("Failed to create JBossGenericPrincipal", t); + } + } + + /** + * Get the Principal given the authenticated Subject. Currently the first subject that is not of type {@code Group} is + * considered or the single subject inside the CallerPrincipal group. + * + * @param subject + * @return the authenticated subject + */ + protected Principal getPrincipal(Subject subject) { + Principal principal = null; + Principal callerPrincipal = null; + if (subject != null) { + Set principals = subject.getPrincipals(); + if (principals != null && !principals.isEmpty()) { + for (Principal p : principals) { + if (!(p instanceof Group) && principal == null) { + principal = p; + } + if (p instanceof Group) { + Group g = Group.class.cast(p); + if (g.getName().equals(SecurityConstants.CALLER_PRINCIPAL_GROUP) && callerPrincipal == null) { + Enumeration e = g.members(); + if (e.hasMoreElements()) + callerPrincipal = e.nextElement(); + } + } + } + } + } + return callerPrincipal == null ? principal : callerPrincipal; + } + + protected Group createGroup(String name, Set principals) { + Group roles = null; + Iterator iter = principals.iterator(); + while (iter.hasNext()) { + Object next = iter.next(); + if ((next instanceof Group) == false) + continue; + Group grp = (Group) next; + if (grp.getName().equals(name)) { + roles = grp; + break; + } + } + // If we did not find a group create one + if (roles == null) { + roles = new SimpleGroup(name); + principals.add(roles); + } + return roles; + } + + protected Group[] getRoleSets(Collection roleSet) { + SimpleGroup roles = new SimpleGroup("Roles"); + Group[] roleSets = {roles}; + for (String role : roleSet) { + roles.addMember(new SimplePrincipal(role)); + } + return roleSets; + } + + static Constructor findJBossGenericPrincipalConstructor() { + for (Constructor c : JBossGenericPrincipal.class.getConstructors()) { + if (c.getParameterTypes().length == 9 && + c.getParameterTypes()[0].equals(Realm.class) && + c.getParameterTypes()[1].equals(String.class) && + c.getParameterTypes()[3].equals(List.class) && + c.getParameterTypes()[4].equals(Principal.class) && + c.getParameterTypes()[6].equals(Object.class) && + c.getParameterTypes()[8].equals(Subject.class)) { + return c; + } + } + return null; + } + +} diff --git a/integration/as7-eap6/adapter/src/main/java/org/keycloak/adapters/jbossweb/KeycloakAuthenticatorValve.java b/integration/as7-eap6/as7-adapter/src/main/java/org/keycloak/adapters/jbossweb/KeycloakAuthenticatorValve.java similarity index 97% rename from integration/as7-eap6/adapter/src/main/java/org/keycloak/adapters/jbossweb/KeycloakAuthenticatorValve.java rename to integration/as7-eap6/as7-adapter/src/main/java/org/keycloak/adapters/jbossweb/KeycloakAuthenticatorValve.java index 91cbb8720f..583d370c57 100755 --- a/integration/as7-eap6/adapter/src/main/java/org/keycloak/adapters/jbossweb/KeycloakAuthenticatorValve.java +++ b/integration/as7-eap6/as7-adapter/src/main/java/org/keycloak/adapters/jbossweb/KeycloakAuthenticatorValve.java @@ -1,55 +1,55 @@ -package org.keycloak.adapters.jbossweb; - -import org.apache.catalina.LifecycleException; -import org.apache.catalina.connector.Request; -import org.apache.catalina.connector.Response; -import org.apache.catalina.core.StandardContext; -import org.apache.catalina.deploy.LoginConfig; -import org.apache.catalina.realm.GenericPrincipal; -import org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve; -import org.keycloak.adapters.tomcat.GenericPrincipalFactory; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.security.Principal; -import java.util.List; - -/** - * Keycloak authentication valve - * - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class KeycloakAuthenticatorValve extends AbstractKeycloakAuthenticatorValve { - public boolean authenticate(Request request, HttpServletResponse response, LoginConfig config) throws java.io.IOException { - return authenticateInternal(request, response, config); - } - - @Override - protected boolean forwardToErrorPageInternal(Request request, HttpServletResponse response, Object loginConfig) throws IOException { - if (loginConfig == null) return false; - LoginConfig config = (LoginConfig)loginConfig; - if (config.getErrorPage() == null) return false; - forwardToErrorPage(request, (Response)response, config); - return true; - } - - - @Override - public void start() throws LifecycleException { - StandardContext standardContext = (StandardContext) context; - standardContext.addLifecycleListener(this); - super.start(); - } - - - public void logout(Request request) { - logoutInternal(request); - } - - @Override - protected GenericPrincipalFactory createPrincipalFactory() { - return new JBossWebPrincipalFactory(); - } -} +package org.keycloak.adapters.jbossweb; + +import org.apache.catalina.LifecycleException; +import org.apache.catalina.connector.Request; +import org.apache.catalina.connector.Response; +import org.apache.catalina.core.StandardContext; +import org.apache.catalina.deploy.LoginConfig; +import org.apache.catalina.realm.GenericPrincipal; +import org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve; +import org.keycloak.adapters.tomcat.GenericPrincipalFactory; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.security.Principal; +import java.util.List; + +/** + * Keycloak authentication valve + * + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class KeycloakAuthenticatorValve extends AbstractKeycloakAuthenticatorValve { + public boolean authenticate(Request request, HttpServletResponse response, LoginConfig config) throws java.io.IOException { + return authenticateInternal(request, response, config); + } + + @Override + protected boolean forwardToErrorPageInternal(Request request, HttpServletResponse response, Object loginConfig) throws IOException { + if (loginConfig == null) return false; + LoginConfig config = (LoginConfig)loginConfig; + if (config.getErrorPage() == null) return false; + forwardToErrorPage(request, (Response)response, config); + return true; + } + + + @Override + public void start() throws LifecycleException { + StandardContext standardContext = (StandardContext) context; + standardContext.addLifecycleListener(this); + super.start(); + } + + + public void logout(Request request) { + logoutInternal(request); + } + + @Override + protected GenericPrincipalFactory createPrincipalFactory() { + return new JBossWebPrincipalFactory(); + } +} diff --git a/integration/as7-eap6/adapter/src/test/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactoryTest.java b/integration/as7-eap6/as7-adapter/src/test/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactoryTest.java similarity index 100% rename from integration/as7-eap6/adapter/src/test/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactoryTest.java rename to integration/as7-eap6/as7-adapter/src/test/java/org/keycloak/adapters/jbossweb/JBossWebPrincipalFactoryTest.java diff --git a/integration/as7-subsystem/pom.xml b/integration/as7-eap6/as7-subsystem/pom.xml similarity index 98% rename from integration/as7-subsystem/pom.xml rename to integration/as7-eap6/as7-subsystem/pom.xml index 2579b8b7e5..a186da3043 100755 --- a/integration/as7-subsystem/pom.xml +++ b/integration/as7-eap6/as7-subsystem/pom.xml @@ -21,7 +21,7 @@ org.keycloak keycloak-parent 1.3.0.Final-SNAPSHOT - ../../pom.xml + ../../../pom.xml keycloak-as7-subsystem diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialAddHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialAddHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialAddHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialAddHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialDefinition.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialDefinition.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialDefinition.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialDefinition.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialReadWriteAttributeHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialReadWriteAttributeHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialReadWriteAttributeHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialReadWriteAttributeHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialRemoveHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialRemoveHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialRemoveHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/CredentialRemoveHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigDeploymentProcessor.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigDeploymentProcessor.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigDeploymentProcessor.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigDeploymentProcessor.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigService.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigService.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigService.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakAdapterConfigService.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessor.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessor.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessor.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessor.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessorAS7.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessorAS7.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessorAS7.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakDependencyProcessorAS7.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakExtension.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakExtension.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakExtension.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakExtension.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemAdd.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemAdd.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemAdd.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemAdd.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemDefinition.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemDefinition.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemDefinition.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemDefinition.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemParser.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemParser.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemParser.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/KeycloakSubsystemParser.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmAddHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmAddHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmAddHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmAddHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmDefinition.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmDefinition.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmDefinition.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmDefinition.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmRemoveHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmRemoveHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmRemoveHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmRemoveHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmWriteAttributeHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmWriteAttributeHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmWriteAttributeHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/RealmWriteAttributeHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentAddHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentAddHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentAddHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentAddHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentDefinition.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentDefinition.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentDefinition.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentDefinition.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentRemoveHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentRemoveHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentRemoveHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentRemoveHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentWriteAttributeHandler.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentWriteAttributeHandler.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentWriteAttributeHandler.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SecureDeploymentWriteAttributeHandler.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SharedAttributeDefinitons.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SharedAttributeDefinitons.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SharedAttributeDefinitons.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/SharedAttributeDefinitons.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/Util.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/Util.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/Util.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/Util.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakLogger.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakLogger.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakLogger.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakLogger.java diff --git a/integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakMessages.java b/integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakMessages.java similarity index 100% rename from integration/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakMessages.java rename to integration/as7-eap6/as7-subsystem/src/main/java/org/keycloak/subsystem/as7/logging/KeycloakMessages.java diff --git a/integration/as7-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/as7-eap6/as7-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension similarity index 100% rename from integration/as7-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension rename to integration/as7-eap6/as7-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension diff --git a/integration/as7-subsystem/src/main/resources/org/keycloak/subsystem/as7/LocalDescriptions.properties b/integration/as7-eap6/as7-subsystem/src/main/resources/org/keycloak/subsystem/as7/LocalDescriptions.properties similarity index 100% rename from integration/as7-subsystem/src/main/resources/org/keycloak/subsystem/as7/LocalDescriptions.properties rename to integration/as7-eap6/as7-subsystem/src/main/resources/org/keycloak/subsystem/as7/LocalDescriptions.properties diff --git a/integration/as7-subsystem/src/main/resources/schema/keycloak_1_1.xsd b/integration/as7-eap6/as7-subsystem/src/main/resources/schema/keycloak_1_1.xsd similarity index 100% rename from integration/as7-subsystem/src/main/resources/schema/keycloak_1_1.xsd rename to integration/as7-eap6/as7-subsystem/src/main/resources/schema/keycloak_1_1.xsd diff --git a/integration/as7-subsystem/src/test/java/org/keycloak/subsystem/as7/RealmDefinitionTestCase.java b/integration/as7-eap6/as7-subsystem/src/test/java/org/keycloak/subsystem/as7/RealmDefinitionTestCase.java similarity index 100% rename from integration/as7-subsystem/src/test/java/org/keycloak/subsystem/as7/RealmDefinitionTestCase.java rename to integration/as7-eap6/as7-subsystem/src/test/java/org/keycloak/subsystem/as7/RealmDefinitionTestCase.java diff --git a/integration/as7-eap6/pom.xml b/integration/as7-eap6/pom.xml new file mode 100644 index 0000000000..50013d94f6 --- /dev/null +++ b/integration/as7-eap6/pom.xml @@ -0,0 +1,20 @@ + + + keycloak-parent + org.keycloak + 1.3.0.Final-SNAPSHOT + ../../pom.xml + + Keycloak AS7 / EAP6 Integration + + 4.0.0 + + keycloak-as7-integration-pom + pom + + + as7-adapter + as7-subsystem + + \ No newline at end of file diff --git a/integration/pom.xml b/integration/pom.xml index 0b248bec60..0a0f4a5b73 100755 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -19,11 +19,10 @@ servlet-oauth-client jboss-adapter-core tomcat - as7-eap6/adapter + as7-eap6 jetty undertow wildfly - as7-subsystem js installed admin-client diff --git a/pom.xml b/pom.xml index 5ba74c69bf..b83d362037 100755 --- a/pom.xml +++ b/pom.xml @@ -1079,6 +1079,12 @@ ${project.version} zip + + org.keycloak + keycloak-as7-modules + ${project.version} + zip + org.keycloak keycloak-wf8-modules