diff --git a/distribution/feature-pack-builds/README.md b/distribution/feature-pack-builds/README.md new file mode 100644 index 0000000000..fe4c55a49f --- /dev/null +++ b/distribution/feature-pack-builds/README.md @@ -0,0 +1,25 @@ +Keycloak Feature Pack Builds +============================ + +The feature pack builds rely on WildFly Feature packs to create different combinations +of Keycloak server/adapter and WildFly web/full. + +Types of Builds Created +-------------------- +The three directories under feature-pack-builds are _adapter-only_, _server-only_, and _server-and-adapter_. + +* **adapter-only** - A WildFly server with the Keycloak adapter subsystem added. This build is based on the WildFly Web Feature Pack. **keycloak-adapter-feature-pack** contains all the modules needed to run the Keycloak WildFly Adapter. Therefore, the build is _org.wildfly:wildfly-web-feature-pack_ + _org.keycloak:keycloak-adapter-feature-pack_. +* **server-only** - A WildFly server with the Keycloak adapter subsystem added. This build is based on the WildFly Full Feature Pack. **keycloak-server-feature-pack** contains all the modules needed to run the Keycloak Server without those already provided by the full WildFly Server. Therefore, the build is _org.wildfly:wildfly-feature-pack_ + _org.keycloak:keycloak-server-feature-pack_. +* **server-and-adapter** is the same thing as **server-only** except it also includes **keycloak-adapter-feature-pack**. Therefore, the build is _org.wildfly:wildfly-feature-pack_ + _org.keycloak:keycloak-server-feature-pack_ + _org.keycloak:keycloak-adapter-feature-pack_. + +Building +-------- +Each of the three types of builds in turn creates a build version and a dist version. + +The build version is a server that uses the new WildFly 9 feature whereby maven artifacts are not bundled with the server. Instead, they are looked up in a repository. + +For the dist version, these artifacts are copied into the server itself and no maven repo is required. + +By default, the dist version does not get built. To build it, specify the jboss-release profile: + +_mvn install -Pjboss-release_ diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/assembly.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/assembly.xml new file mode 100644 index 0000000000..526c08dcef --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/assembly.xml @@ -0,0 +1,39 @@ + + + + + feature-pack + + zip + + false + + + target/${project.build.finalName} + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/feature-pack-build.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/feature-pack-build.xml new file mode 100644 index 0000000000..e55c8d94bf --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/feature-pack-build.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml new file mode 100644 index 0000000000..ee690f1002 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml @@ -0,0 +1,176 @@ + + + + org.keycloak + adapter-only-builds + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-adapter-feature-pack + + Keycloak Feature Pack: Adapter + pom + + + + com.github.relaxng + relaxngDatatype + + + com.sun.istack + istack-commons-runtime + + + com.sun.istack + istack-commons-tools + + + com.sun.xml.bind.external + rngom + + + com.sun.xsom + xsom + + + io.netty + netty-all + + + org.glassfish.jaxb + jaxb-core + + + org.glassfish.jaxb + jaxb-runtime + + + org.glassfish.jaxb + jaxb-xjc + + + org.glassfish.jaxb + codemodel + + + org.glassfish.jaxb + txw2 + + + org.jboss.spec.javax.xml.bind + jboss-jaxb-api_2.2_spec + + + org.jboss.xnio.netty + netty-xnio-transport + + + joda-time + joda-time + + + org.apache.httpcomponents + httpmime + + + org.apache.james + apache-mime4j + + + org.bouncycastle + bcprov-jdk15on + + + org.bouncycastle + bcpkix-jdk15on + + + org.keycloak + keycloak-wildfly-adapter-subsystem + + + org.keycloak + keycloak-undertow-adapter + + + org.slf4j + jcl-over-slf4j + + + org.wildfly + wildfly-web-feature-pack + zip + + + + + + + org.apache.maven.plugins + maven-resources-plugin + + + + org.wildfly.build + wildfly-feature-pack-build-maven-plugin + + + feature-pack-build + + build + + compile + + feature-pack-build.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + target/ + target/assembly/work + gnu + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/subsystems.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/subsystems.xml new file mode 100644 index 0000000000..3bff333a15 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/subsystems.xml @@ -0,0 +1,15 @@ + + + + + logging.xml + ee.xml + io.xml + jmx.xml + naming.xml + request-controller.xml + security.xml + undertow.xml + keycloak-adapter.xml + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/template.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/template.xml new file mode 100644 index 0000000000..33a0ac7a10 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/template.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/subsystems.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/subsystems.xml new file mode 100644 index 0000000000..765f01846c --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/subsystems.xml @@ -0,0 +1,17 @@ + + + + + logging.xml + deployment-scanner.xml + ee.xml + io.xml + jmx.xml + naming.xml + request-controller.xml + security.xml + security-manager.xml + undertow.xml + keycloak-adapter.xml + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/template.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/template.xml new file mode 100644 index 0000000000..d0a8130109 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/template.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/content/README.md b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/content/README.md new file mode 100644 index 0000000000..e7b122b46e --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/content/README.md @@ -0,0 +1,2 @@ +This directory intentionally left empty. The Feature Pack plugin barfs if there is no content +directory. But Git won't save an empty directory. Thus, we need this readme file. \ No newline at end of file diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml new file mode 100644 index 0000000000..c4985dd641 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml new file mode 100644 index 0000000000..e876e160fd --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml new file mode 100644 index 0000000000..90c2a2aa45 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml new file mode 100644 index 0000000000..8b31f98700 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml new file mode 100644 index 0000000000..bb0d1bbf68 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/io/netty/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/io/netty/main/module.xml new file mode 100644 index 0000000000..f841695197 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/io/netty/main/module.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml new file mode 100644 index 0000000000..fdb649fa1d --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml new file mode 100644 index 0000000000..ba7043089f --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml new file mode 100644 index 0000000000..cf9cb86d56 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml new file mode 100644 index 0000000000..f7362e3dce --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml new file mode 100644 index 0000000000..39aab46a30 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml new file mode 100644 index 0000000000..95de37e9d8 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml new file mode 100644 index 0000000000..eaa05578bf --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml new file mode 100644 index 0000000000..a4e269232d --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml new file mode 100644 index 0000000000..5e62a8a63b --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml new file mode 100644 index 0000000000..25b7520744 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml new file mode 100644 index 0000000000..1f3215d2d2 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml new file mode 100644 index 0000000000..c4b1b52621 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml new file mode 100644 index 0000000000..07dcd06352 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml new file mode 100644 index 0000000000..f7cd89005d --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml new file mode 100644 index 0000000000..b23c589155 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml new file mode 100644 index 0000000000..6e5b217ba5 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml new file mode 100644 index 0000000000..9ba1cb291a --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml new file mode 100644 index 0000000000..df7cc036c8 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml new file mode 100644 index 0000000000..c29c8fc0ae --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml b/distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml new file mode 100644 index 0000000000..704449a131 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml @@ -0,0 +1,36 @@ + + + + + thin-server + + zip + + false + + + target + + + ${project.build.finalName}/** + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml b/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml new file mode 100644 index 0000000000..95f05ec1d3 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml @@ -0,0 +1,88 @@ + + + + org.keycloak + adapter-only-builds + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-adapter-only-build + + Keycloak WildFly Build: Adapter Only + pom + + + + org.keycloak + keycloak-adapter-feature-pack + ${project.version} + zip + + + + + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + + + server-provisioning + + build + + compile + + server-provisioning.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + ${project.build.directory} + ${project.build.directory}/assembly/work + gnu + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-only-build/server-provisioning.xml b/distribution/feature-pack-builds/adapter-only/adapter-only-build/server-provisioning.xml new file mode 100644 index 0000000000..13de0ef371 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/server-provisioning.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/adapter-only/adapter-only-dist/assembly.xml b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/assembly.xml new file mode 100644 index 0000000000..704449a131 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/assembly.xml @@ -0,0 +1,36 @@ + + + + + thin-server + + zip + + false + + + target + + + ${project.build.finalName}/** + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml new file mode 100644 index 0000000000..4f1ca1a774 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml @@ -0,0 +1,92 @@ + + + + org.keycloak + adapter-only-builds + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-adapter-only-dist + + Keycloak WildFly Dist: Adapter Only + pom + + + + org.keycloak + keycloak-adapter-feature-pack + ${project.version} + zip + + + + + + jboss-release + + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + + + server-provisioning + + build + + compile + + server-provisioning.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + ${project.build.directory} + ${project.build.directory}/assembly/work + gnu + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/adapter-only-dist/server-provisioning.xml b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/server-provisioning.xml new file mode 100644 index 0000000000..b9f46bc9eb --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/server-provisioning.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/adapter-only/pom.xml b/distribution/feature-pack-builds/adapter-only/pom.xml new file mode 100644 index 0000000000..bd57e0bc36 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/pom.xml @@ -0,0 +1,21 @@ + + + feature-pack-builds + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + Adapter Only Builds + + 4.0.0 + + adapter-only-builds + pom + + + adapter-feature-pack + adapter-only-build + adapter-only-dist + + diff --git a/distribution/feature-pack-builds/pom.xml b/distribution/feature-pack-builds/pom.xml new file mode 100644 index 0000000000..a35b3f7a6f --- /dev/null +++ b/distribution/feature-pack-builds/pom.xml @@ -0,0 +1,21 @@ + + + distribution-pom + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + Feature Pack Builds + + 4.0.0 + + feature-pack-builds + pom + + + adapter-only + server-only + server-and-adapter + + diff --git a/distribution/feature-pack-builds/server-and-adapter/pom.xml b/distribution/feature-pack-builds/server-and-adapter/pom.xml new file mode 100644 index 0000000000..9616217531 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/pom.xml @@ -0,0 +1,20 @@ + + + feature-pack-builds + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + Builds with both server and adapter + + 4.0.0 + + server-and-adapter + pom + + + server-and-adapter-build + server-and-adapter-dist + + diff --git a/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/assembly.xml b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/assembly.xml new file mode 100644 index 0000000000..704449a131 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/assembly.xml @@ -0,0 +1,36 @@ + + + + + thin-server + + zip + + false + + + target + + + ${project.build.finalName}/** + + + + diff --git a/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/pom.xml b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/pom.xml new file mode 100644 index 0000000000..2bc3a0a697 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/pom.xml @@ -0,0 +1,93 @@ + + + + org.keycloak + server-and-adapter + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-server-and-adapter-build + + Keycloak WildFly Build: Server and Adapter + pom + + + + org.keycloak + keycloak-server-feature-pack + ${project.version} + zip + + + org.keycloak + keycloak-adapter-feature-pack + ${project.version} + zip + + + + + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + + + server-provisioning + + build + + compile + + server-provisioning.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + ${project.build.directory} + ${project.build.directory}/assembly/work + gnu + + + + + + + diff --git a/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/server-provisioning.xml b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/server-provisioning.xml new file mode 100644 index 0000000000..f83f51720d --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/server-provisioning.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/assembly.xml b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/assembly.xml new file mode 100644 index 0000000000..704449a131 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/assembly.xml @@ -0,0 +1,36 @@ + + + + + thin-server + + zip + + false + + + target + + + ${project.build.finalName}/** + + + + diff --git a/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/pom.xml b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/pom.xml new file mode 100644 index 0000000000..4a492fddc3 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/pom.xml @@ -0,0 +1,98 @@ + + + + org.keycloak + server-and-adapter + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-server-and-adapter-dist + + Keycloak WildFly Dist: Server and Adapter + pom + + + + org.keycloak + keycloak-server-feature-pack + ${project.version} + zip + + + org.keycloak + keycloak-adapter-feature-pack + ${project.version} + zip + + + + + + jboss-release + + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + + + server-provisioning + + build + + compile + + server-provisioning.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + ${project.build.directory} + ${project.build.directory}/assembly/work + gnu + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/server-provisioning.xml b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/server-provisioning.xml new file mode 100644 index 0000000000..83253d7c56 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/server-provisioning.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/pom.xml b/distribution/feature-pack-builds/server-only/pom.xml new file mode 100644 index 0000000000..af41711f53 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/pom.xml @@ -0,0 +1,21 @@ + + + feature-pack-builds + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + Server Only Builds + + 4.0.0 + + server-only-builds + pom + + + server-feature-pack + server-only-build + server-only-dist + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/assembly.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/assembly.xml new file mode 100644 index 0000000000..eaee2caa59 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/assembly.xml @@ -0,0 +1,53 @@ + + + + + feature-pack + + zip + + false + + + + + target/${project.build.finalName} + + true + + **/module.xml + + + + target/${project.build.finalName} + + false + + **/module.xml + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/feature-pack-build.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/feature-pack-build.xml new file mode 100644 index 0000000000..8737c28576 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/feature-pack-build.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml new file mode 100644 index 0000000000..fd9d37f602 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml @@ -0,0 +1,149 @@ + + + + org.keycloak + server-only-builds + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + keycloak-server-feature-pack + + Keycloak Feature Pack: Server + pom + + + + org.keycloak + keycloak-dependencies-server-all + ${project.version} + pom + + + org.keycloak.subsystem + keycloak-server + ${project.version} + war + + + org.keycloak + keycloak-wildfly-server-subsystem + ${project.version} + + + org.keycloak + keycloak-wildfly-extensions + ${project.version} + + + org.wildfly + wildfly-feature-pack + zip + + + + org.keycloak + keycloak-undertow-adapter + + + org.keycloak.subsystem + keycloak-server + war + ${project.version} + + + + + + + org.apache.maven.plugins + maven-resources-plugin + + + + org.wildfly.build + wildfly-feature-pack-build-maven-plugin + + + feature-pack-build + + build + + compile + + feature-pack-build.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + target/ + target/assembly/work + gnu + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + prepare-package + + copy + + + + + org.keycloak.subsystem + keycloak-server + ${project.version} + war + true + ${project.build.directory}/${project.build.finalName}/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/auth-server + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/subsystems.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/subsystems.xml new file mode 100644 index 0000000000..2dde48f173 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/subsystems.xml @@ -0,0 +1,138 @@ + + + + + + logging.xml + batch.xml + bean-validation.xml + keycloak-datasources.xml + ee.xml + ejb3.xml + io.xml + infinispan.xml + jaxrs.xml + jca.xml + jdr.xml + jmx.xml + jpa.xml + jsf.xml + mail.xml + naming.xml + pojo.xml + remoting.xml + resource-adapters.xml + request-controller.xml + sar.xml + security.xml + security-manager.xml + transactions.xml + undertow.xml + webservices.xml + weld.xml + keycloak-server.xml + + + + logging.xml + batch.xml + bean-validation.xml + keycloak-datasources.xml + ee.xml + ejb3.xml + io.xml + infinispan.xml + jaxrs.xml + jca.xml + jdr.xml + jgroups.xml + jmx.xml + jpa.xml + jsf.xml + mail.xml + mod_cluster.xml + naming.xml + pojo.xml + remoting.xml + resource-adapters.xml + request-controller.xml + sar.xml + security.xml + security-manager.xml + transactions.xml + undertow.xml + webservices.xml + weld.xml + keycloak-server.xml + + + + logging.xml + batch.xml + bean-validation.xml + keycloak-datasources.xml + ee.xml + ejb3.xml + io.xml + infinispan.xml + iiop-openjdk.xml + jaxrs.xml + jca.xml + jdr.xml + jmx.xml + jpa.xml + jsf.xml + jsr77.xml + mail.xml + messaging.xml + naming.xml + pojo.xml + remoting.xml + resource-adapters.xml + request-controller.xml + sar.xml + security.xml + security-manager.xml + transactions.xml + undertow.xml + webservices.xml + weld.xml + keycloak-server.xml + + + + logging.xml + batch.xml + bean-validation.xml + keycloak-datasources.xml + ee.xml + ejb3.xml + io.xml + infinispan.xml + iiop-openjdk.xml + jaxrs.xml + jca.xml + jdr.xml + jgroups.xml + jmx.xml + jpa.xml + jsf.xml + jsr77.xml + mail.xml + messaging.xml + mod_cluster.xml + naming.xml + pojo.xml + remoting.xml + resource-adapters.xml + request-controller.xml + sar.xml + security.xml + security-manager.xml + transactions.xml + undertow.xml + webservices.xml + weld.xml + keycloak-server.xml + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/template.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/template.xml new file mode 100644 index 0000000000..cf3ccccd33 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/template.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/subsystems.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/subsystems.xml new file mode 100644 index 0000000000..fad3c38b14 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/subsystems.xml @@ -0,0 +1,35 @@ + + + + + logging.xml + batch.xml + bean-validation.xml + keycloak-datasources.xml + deployment-scanner.xml + ee.xml + ejb3.xml + io.xml + infinispan.xml + jaxrs.xml + jca.xml + jdr.xml + jmx.xml + jpa.xml + jsf.xml + mail.xml + naming.xml + pojo.xml + remoting.xml + resource-adapters.xml + request-controller.xml + sar.xml + security-manager.xml + security.xml + transactions.xml + undertow.xml + webservices.xml + weld.xml + keycloak-server.xml + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/template.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/template.xml new file mode 100644 index 0000000000..2260468fff --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/template.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json new file mode 100644 index 0000000000..9f0d03ea5d --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json @@ -0,0 +1,72 @@ +{ + "admin": { + "realm": "master" + }, + + "eventsStore": { + "provider": "jpa", + "jpa": { + "exclude-events": [ "REFRESH_TOKEN" ] + } + }, + + "realm": { + "provider": "jpa" + }, + + "user": { + "provider": "jpa" + }, + + "userSessions": { + "provider" : "mem" + }, + + "realmCache": { + "provider": "mem" + }, + + "userCache": { + "provider": "mem", + "mem": { + "maxSize": 20000 + } + }, + + "timer": { + "provider": "basic" + }, + + "theme": { + "default": "keycloak", + "staticMaxAge": 2592000, + "cacheTemplates": true, + "cacheThemes": true, + "folder": { + "dir": "${jboss.server.config.dir}/themes" + } + }, + + "login": { + "provider": "freemarker" + }, + + "account": { + "provider": "freemarker" + }, + + "email": { + "provider": "freemarker" + }, + + "scheduled": { + "interval": 900 + }, + + "connectionsJpa": { + "default": { + "dataSource": "java:jboss/datasources/KeycloakDS", + "databaseSchema": "update" + } + } +} \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml new file mode 100644 index 0000000000..cc18aaaf7a --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml new file mode 100644 index 0000000000..b73ba9b34b --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml new file mode 100644 index 0000000000..10f1103cfd --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml new file mode 100644 index 0000000000..ba7043089f --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml new file mode 100644 index 0000000000..2043bef613 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml new file mode 100644 index 0000000000..d36887e584 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml new file mode 100644 index 0000000000..1512a9e6b9 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml new file mode 100644 index 0000000000..07dcd06352 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml new file mode 100644 index 0000000000..f9837268fb --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml new file mode 100644 index 0000000000..1a75cd11bf --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml new file mode 100644 index 0000000000..839d9f92fb --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml new file mode 100644 index 0000000000..ef1f1b2eee --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-http-client/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-http-client/main/module.xml new file mode 100755 index 0000000000..f52288ebd9 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-http-client/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml new file mode 100644 index 0000000000..94a9f1a2f4 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml new file mode 100644 index 0000000000..8ade3fd971 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml new file mode 100644 index 0000000000..ef36ac3d59 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml new file mode 100644 index 0000000000..621f06d920 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml new file mode 100644 index 0000000000..504023f5e5 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml new file mode 100644 index 0000000000..c773354615 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml new file mode 100644 index 0000000000..b23c589155 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml new file mode 100644 index 0000000000..ed433b52c8 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml new file mode 100644 index 0000000000..a0c371fb66 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml new file mode 100644 index 0000000000..2f8c152b0c --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml new file mode 100644 index 0000000000..255f8302b4 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml new file mode 100644 index 0000000000..5a6fe2b92b --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml new file mode 100644 index 0000000000..12c859e74c --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml new file mode 100644 index 0000000000..4e48e7f69b --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml new file mode 100644 index 0000000000..2e503352f7 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml new file mode 100644 index 0000000000..1cda32b5ee --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml new file mode 100644 index 0000000000..a390929490 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml new file mode 100644 index 0000000000..a33365dfd3 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml new file mode 100644 index 0000000000..c6c6325375 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml new file mode 100644 index 0000000000..0e12a97f6f --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml new file mode 100644 index 0000000000..572ab38840 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml new file mode 100644 index 0000000000..1844bc806f --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml new file mode 100644 index 0000000000..6e5b217ba5 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml new file mode 100644 index 0000000000..d99ac75cad --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml new file mode 100644 index 0000000000..4f9da8b55c --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml new file mode 100644 index 0000000000..e8c9e4dbd8 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml new file mode 100644 index 0000000000..ff6f6ac456 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml new file mode 100644 index 0000000000..1cb5c4182e --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml new file mode 100644 index 0000000000..14a0a869c6 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml new file mode 100644 index 0000000000..e3ae276601 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml new file mode 100644 index 0000000000..4f50b7ad1d --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml new file mode 100644 index 0000000000..702406c95d --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml new file mode 100644 index 0000000000..23f94b144d --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml new file mode 100644 index 0000000000..2033069957 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml new file mode 100644 index 0000000000..6a1d1019ca --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml new file mode 100644 index 0000000000..69936807f8 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml new file mode 100644 index 0000000000..c09490e180 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml new file mode 100644 index 0000000000..fc0cd15d47 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml new file mode 100644 index 0000000000..5233767d0d --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml new file mode 100644 index 0000000000..6c877817cf --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml new file mode 100644 index 0000000000..598d5dda44 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml new file mode 100644 index 0000000000..836d5d6b5b --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml new file mode 100644 index 0000000000..4c22779011 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml new file mode 100644 index 0000000000..9197bb0c96 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml new file mode 100644 index 0000000000..bb56189ffd --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml new file mode 100644 index 0000000000..db385431c9 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml new file mode 100644 index 0000000000..5af13cef39 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml new file mode 100644 index 0000000000..cf56209f4a --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml new file mode 100644 index 0000000000..77049169ad --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml new file mode 100644 index 0000000000..e2279f9a3a --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml new file mode 100644 index 0000000000..9ba1cb291a --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml new file mode 100644 index 0000000000..df7cc036c8 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml new file mode 100644 index 0000000000..05a48e5fb5 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml new file mode 100644 index 0000000000..d75eef002a --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml new file mode 100644 index 0000000000..bb4acdd80e --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml new file mode 100644 index 0000000000..70b84dcc78 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-only-build/assembly.xml b/distribution/feature-pack-builds/server-only/server-only-build/assembly.xml new file mode 100644 index 0000000000..704449a131 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-build/assembly.xml @@ -0,0 +1,36 @@ + + + + + thin-server + + zip + + false + + + target + + + ${project.build.finalName}/** + + + + diff --git a/distribution/feature-pack-builds/server-only/server-only-build/pom.xml b/distribution/feature-pack-builds/server-only/server-only-build/pom.xml new file mode 100644 index 0000000000..5d88347eb1 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-build/pom.xml @@ -0,0 +1,87 @@ + + + + org.keycloak + server-only-builds + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-server-only-build + + Keycloak WildFly Build: Server Only + pom + + + + org.keycloak + keycloak-server-feature-pack + ${project.version} + zip + + + + + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + + + server-provisioning + + build + + compile + + server-provisioning.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + ${project.build.directory} + ${project.build.directory}/assembly/work + gnu + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-only-build/server-provisioning.xml b/distribution/feature-pack-builds/server-only/server-only-build/server-provisioning.xml new file mode 100644 index 0000000000..9e4b4f368f --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-build/server-provisioning.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/server-only-dist/assembly.xml b/distribution/feature-pack-builds/server-only/server-only-dist/assembly.xml new file mode 100644 index 0000000000..1d7cc51697 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-dist/assembly.xml @@ -0,0 +1,36 @@ + + + + + full-server + + zip + + false + + + target + + + ${project.build.finalName}/** + + + + diff --git a/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml b/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml new file mode 100644 index 0000000000..4f13fbc899 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml @@ -0,0 +1,92 @@ + + + + org.keycloak + server-only-builds + 1.3.0.Beta1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + keycloak-server-only-dist + + Keycloak WildFly Dist: Server Only + pom + + + + org.keycloak + keycloak-server-feature-pack + ${project.version} + zip + + + + + + jboss-release + + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + + + server-provisioning + + build + + compile + + server-provisioning.xml + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + assemble + package + + single + + + + assembly.xml + + true + ${project.build.finalName} + false + ${project.build.directory} + ${project.build.directory}/assembly/work + gnu + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/server-only-dist/server-provisioning.xml b/distribution/feature-pack-builds/server-only/server-only-dist/server-provisioning.xml new file mode 100644 index 0000000000..d414b952a0 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-dist/server-provisioning.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/distribution/modules/build.xml b/distribution/modules/build.xml index 0fdcfa481c..e7ede69426 100755 --- a/distribution/modules/build.xml +++ b/distribution/modules/build.xml @@ -336,8 +336,11 @@ - - + + + + + diff --git a/distribution/modules/pom.xml b/distribution/modules/pom.xml index da8260d400..501e422f5c 100755 --- a/distribution/modules/pom.xml +++ b/distribution/modules/pom.xml @@ -56,7 +56,13 @@ org.keycloak - keycloak-subsystem + keycloak-wildfly-server-subsystem + ${project.version} + + + org.keycloak + keycloak-wildfly-adapter-subsystem + ${project.version} org.keycloak.subsystem @@ -174,7 +180,7 @@ keycloak-server war true - ${project.build.directory}/modules/org/keycloak/keycloak-subsystem/main/auth-server + ${project.build.directory}/modules/org/keycloak/keycloak-server-subsystem/main/auth-server diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml new file mode 100755 index 0000000000..3408a92aa3 --- /dev/null +++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-subsystem/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server-subsystem/main/module.xml similarity index 99% rename from distribution/modules/src/main/resources/modules/org/keycloak/keycloak-subsystem/main/module.xml rename to distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server-subsystem/main/module.xml index 3953a408a7..e877fe41ca 100755 --- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-subsystem/main/module.xml +++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server-subsystem/main/module.xml @@ -22,7 +22,7 @@ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> - + diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml index ddf24752d0..9a7229ff8c 100755 --- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml +++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml @@ -10,6 +10,7 @@ + @@ -57,7 +58,7 @@ - + diff --git a/distribution/pom.xml b/distribution/pom.xml index d09fbb8312..516e94f6cc 100755 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -37,5 +37,6 @@ server-overlay src-dist subsystem-war + feature-pack-builds diff --git a/distribution/server-overlay/src/main/xslt/standalone.xsl b/distribution/server-overlay/src/main/xslt/standalone.xsl index 0180557725..9e7d309d54 100755 --- a/distribution/server-overlay/src/main/xslt/standalone.xsl +++ b/distribution/server-overlay/src/main/xslt/standalone.xsl @@ -16,7 +16,8 @@ - + + @@ -38,7 +39,7 @@ - + true auth diff --git a/examples/demo-template/admin-access-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/examples/demo-template/admin-access-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 97c5645855..9c1bac9b36 100755 --- a/examples/demo-template/admin-access-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/examples/demo-template/admin-access-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/examples/demo-template/customer-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/examples/demo-template/customer-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 97c5645855..9c1bac9b36 100755 --- a/examples/demo-template/customer-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/examples/demo-template/customer-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/examples/demo-template/pom.xml b/examples/demo-template/pom.xml index 2e10aa1848..eb179f09e2 100755 --- a/examples/demo-template/pom.xml +++ b/examples/demo-template/pom.xml @@ -37,4 +37,25 @@ third-party third-party-cdi + + + + no-keycloak-json + + + no-keycloak-json + + + + + + maven-war-plugin + + **/keycloak.json + + + + + + diff --git a/examples/demo-template/product-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/examples/demo-template/product-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 97c5645855..9c1bac9b36 100755 --- a/examples/demo-template/product-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/examples/demo-template/product-app/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/examples/demo-template/third-party-cdi/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/examples/demo-template/third-party-cdi/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 97c5645855..9c1bac9b36 100755 --- a/examples/demo-template/third-party-cdi/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/examples/demo-template/third-party-cdi/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/examples/demo-template/third-party/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/examples/demo-template/third-party/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 97c5645855..9c1bac9b36 100755 --- a/examples/demo-template/third-party/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/examples/demo-template/third-party/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/integration/keycloak-as7-subsystem/pom.xml b/integration/keycloak-as7-subsystem/pom.xml index 7eb6c225f9..f1ee2ed8f3 100755 --- a/integration/keycloak-as7-subsystem/pom.xml +++ b/integration/keycloak-as7-subsystem/pom.xml @@ -71,25 +71,25 @@ org.jboss.as jboss-as-naming - 7.1.1.Final + ${jboss.version} org.jboss.as jboss-as-server - 7.1.1.Final + ${jboss.version} org.jboss.as jboss-as-ee - 7.1.1.Final + ${jboss.version} org.jboss.as jboss-as-web - 7.1.1.Final + ${jboss.version} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/Environment.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/Environment.java deleted file mode 100644 index ceb1d51fad..0000000000 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/Environment.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors - * as indicated by the @author tags. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package org.keycloak.subsystem.extension; - -import org.jboss.as.version.Version; -import org.jboss.modules.Module; -import org.jboss.modules.ModuleIdentifier; -import org.jboss.modules.ModuleLoadException; - -/** - * Allows the Keycloak subsystem to learn about its environment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class Environment { - private static final ModuleIdentifier KEYCLOAK_SUBSYSTEM = ModuleIdentifier.create("org.keycloak.keycloak-subsystem"); - - private static final boolean isWildFly = findIsWildFly(); - - public Environment() { - } - - private static boolean findIsWildFly() { - try { - return !Version.AS_VERSION.startsWith("7"); - } catch (Exception e) { - return false; - } - } - - public Module getSubsysModule() { - // Unfortunately, we can't cache this because unit tests will fail - try { - return Module.getModuleFromCallerModuleLoader(KEYCLOAK_SUBSYSTEM); - } catch (ModuleLoadException e) { - throw new IllegalStateException("Can't find Keycloak subsystem.", e); - } - } - - public static boolean isWildFly() { - return isWildFly; - } -} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java deleted file mode 100755 index dc2d8e76d0..0000000000 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors - * as indicated by the @author tags. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package org.keycloak.subsystem.extension; - -import org.jboss.as.server.deployment.DeploymentPhaseContext; -import org.jboss.as.server.deployment.DeploymentUnit; -import org.jboss.as.server.deployment.DeploymentUnitProcessingException; -import org.jboss.as.server.deployment.DeploymentUnitProcessor; -import org.jboss.as.web.deployment.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.jboss.ValveMetaData; -import org.jboss.metadata.web.spec.LoginConfigMetaData; -import org.keycloak.adapters.jbossweb.KeycloakAuthenticatorValve; -import org.keycloak.subsystem.logging.KeycloakLogger; - -import java.util.ArrayList; -import java.util.List; - -/** - * Pass authentication data (keycloak.json) as a servlet context param so it can be read by the KeycloakServletExtension. - * This is used for EAP6. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ - -// Note: Even though this class closely resembles the WildFly KeycloakAdapterConfigDeploymentProcessor -// it can not be easily refactored because the WarMetaData classes are of different types. -public class KeycloakAdapterConfigDeploymentProcessorEAP6 implements DeploymentUnitProcessor { - protected Logger log = Logger.getLogger(KeycloakAdapterConfigDeploymentProcessorEAP6.class); - - @Override - public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { - DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); - String deploymentName = deploymentUnit.getName(); - - KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); - //log.info("********* CHECK KEYCLOAK DEPLOYMENT: " + deploymentName); - if (service.isSecureDeployment(deploymentName)) { - addKeycloakAuthData(phaseContext, deploymentName, service); - return; - } - - // else check to see if KEYCLOAK is specified as login config - WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); - if (warMetaData == null) return; - JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); - if (webMetaData == null) return; - - LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); - if (loginConfig != null && "KEYCLOAK".equalsIgnoreCase(loginConfig.getAuthMethod())) { - addValve(webMetaData); - } - } - - private void addKeycloakAuthData(DeploymentPhaseContext phaseContext, String deploymentName, KeycloakAdapterConfigService service) { - DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); - 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); - } - addValve(webMetaData); - - LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); - if (loginConfig == null) { - loginConfig = new LoginConfigMetaData(); - webMetaData.setLoginConfig(loginConfig); - } - loginConfig.setAuthMethod("KEYCLOAK"); - loginConfig.setRealmName(service.getRealmName(deploymentName)); - KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentName); - } - - private void addValve(JBossWebMetaData webMetaData) { - List valves = webMetaData.getValves(); - if (valves == null) { - valves = new ArrayList(1); - webMetaData.setValves(valves); - } - ValveMetaData valve = new ValveMetaData(); - valve.setValveClass(KeycloakAuthenticatorValve.class.getName()); - valve.setModule("org.keycloak.keycloak-as7-adapter"); - //log.info("******* adding Keycloak valve to: " + deploymentName); - valves.add(valve); - } - - private void addJSONData(String json, WarMetaData warMetaData) { - JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); - if (webMetaData == null) { - webMetaData = new JBossWebMetaData(); - warMetaData.setMergedJBossWebMetaData(webMetaData); - } - - List contextParams = webMetaData.getContextParams(); - if (contextParams == null) { - contextParams = new ArrayList(); - } - - ParamValueMetaData param = new ParamValueMetaData(); - param.setParamName(KeycloakAdapterConfigDeploymentProcessor.AUTH_DATA_PARAM_NAME); - param.setParamValue(json); - contextParams.add(param); - - webMetaData.setContextParams(contextParams); - } - - @Override - public void undeploy(DeploymentUnit du) { - - } - -} diff --git a/integration/keycloak-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/keycloak-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension deleted file mode 100644 index 6a7d631da0..0000000000 --- a/integration/keycloak-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension +++ /dev/null @@ -1 +0,0 @@ -org.keycloak.subsystem.extension.KeycloakExtension diff --git a/integration/keycloak-subsystem/src/main/resources/subsystem-templates/keycloak.xml b/integration/keycloak-subsystem/src/main/resources/subsystem-templates/keycloak.xml deleted file mode 100644 index 8a6256704d..0000000000 --- a/integration/keycloak-subsystem/src/main/resources/subsystem-templates/keycloak.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - org.keycloak.keycloak-subsystem - - - - - - - - - master - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4siLKUew0WYxdtq6/rwk4Uj/4amGFFnE/yzIxQVU0PUqz3QBRVkUWpDj0K6ZnS5nzJV/y6DHLEy7hjZTdRDphyF1sq09aDOYnVpzu8o2sIlMM8q5RnUyEfIyUZqwo8pSZDJ90fS0s+IDUJNCSIrAKO3w1lqZDHL6E/YFHXyzkvQIDAQAB - http://localhost:8080/auth - EXTERNAL - web-console - 0aa31d98-e0aa-404c-b6e0-e771dba1e798 - true - - - master - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4siLKUew0WYxdtq6/rwk4Uj/4amGFFnE/yzIxQVU0PUqz3QBRVkUWpDj0K6ZnS5nzJV/y6DHLEy7hjZTdRDphyF1sq09aDOYnVpzu8o2sIlMM8q5RnUyEfIyUZqwo8pSZDJ90fS0s+IDUJNCSIrAKO3w1lqZDHL6E/YFHXyzkvQIDAQAB - http://localhost:8080/auth - EXTERNAL - http-endpoint - 2769a4a2-5be0-454f-838f-f33b7755b667 - true - - - - - - diff --git a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/SubsystemParsingTestCase.java b/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/SubsystemParsingTestCase.java deleted file mode 100755 index 911fed4530..0000000000 --- a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/SubsystemParsingTestCase.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors - * as indicated by the @author tags. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package org.keycloak.subsystem.extension; - - -import junit.framework.Assert; -import org.jboss.as.controller.PathAddress; -import org.jboss.as.controller.PathElement; -import org.jboss.as.subsystem.test.AbstractSubsystemTest; -import org.jboss.as.subsystem.test.KernelServices; -import org.jboss.dmr.ModelNode; -import org.junit.Test; - -import java.util.List; - -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.*; - - -/** - * Tests all management expects for subsystem, parsing, marshaling, model definition and other - * Here is an example that allows you a fine grained controller over what is tested and how. So it can give you ideas what can be done and tested. - * If you have no need for advanced testing of subsystem you look at {@link SubsystemBaseParsingTestCase} that testes same stuff but most of the code - * is hidden inside of test harness - * - * @author Kabir Khan - */ -public class SubsystemParsingTestCase extends AbstractSubsystemTest { - - public SubsystemParsingTestCase() { - super(KeycloakExtension.SUBSYSTEM_NAME, new KeycloakExtension()); - } - - @Test - public void testJson() throws Exception { - ModelNode node = new ModelNode(); - node.get("realm").set("demo"); - node.get("resource").set("customer-portal"); - node.get("realm-public-key").set("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); - node.get("auth-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/login"); - node.get("code-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/access/codes"); - node.get("ssl-required").set("external"); - node.get("expose-token").set(true); - ModelNode credential = new ModelNode(); - credential.get("password").set("password"); - node.get("credentials").set(credential); - - System.out.println("json=" + node.toJSONString(false)); - } - /** - * Tests that the xml is parsed into the correct operations - */ - @Test - public void testParseSubsystem() throws Exception { - //Parse the subsystem xml into operations - String subsystemXml = - "" + - ""; - List operations = super.parse(subsystemXml); - - ///Check that we have the expected number of operations - Assert.assertEquals(1, operations.size()); - - //Check that each operation has the correct content - ModelNode addSubsystem = operations.get(0); - Assert.assertEquals(ADD, addSubsystem.get(OP).asString()); - PathAddress addr = PathAddress.pathAddress(addSubsystem.get(OP_ADDR)); - Assert.assertEquals(1, addr.size()); - PathElement element = addr.getElement(0); - Assert.assertEquals(SUBSYSTEM, element.getKey()); - Assert.assertEquals(KeycloakExtension.SUBSYSTEM_NAME, element.getValue()); - } - - /** - * Test that the model created from the xml looks as expected - */ - @Test - public void testInstallIntoController() throws Exception { - //Parse the subsystem xml and install into the controller - String subsystemXml = - "" + - ""; - KernelServices services = super.installInController(subsystemXml); - - //Read the whole model and make sure it looks as expected - ModelNode model = services.readWholeModel(); - Assert.assertTrue(model.get(SUBSYSTEM).hasDefined(KeycloakExtension.SUBSYSTEM_NAME)); - } - - /** - * Starts a controller with a given subsystem xml and then checks that a second - * controller started with the xml marshalled from the first one results in the same model - */ - @Test - public void testParseAndMarshalModel() throws Exception { - //Parse the subsystem xml and install into the first controller - //TODO: Figure out why this fails - String subsystemXml = - "" + - ""; - KernelServices servicesA = super.installInController(subsystemXml); - //Get the model and the persisted xml from the first controller - ModelNode modelA = servicesA.readWholeModel(); - String marshalled = servicesA.getPersistedSubsystemXml(); - - //Install the persisted xml from the first controller into a second controller - KernelServices servicesB = super.installInController(marshalled); - ModelNode modelB = servicesB.readWholeModel(); - - //Make sure the models from the two controllers are identical - super.compare(modelA, modelB); - } - - /** - * Starts a controller with the given subsystem xml and then checks that a second - * controller started with the operations from its describe action results in the same model - */ - @Test - public void testDescribeHandler() throws Exception { - //Parse the subsystem xml and install into the first controller - String subsystemXml = - "" + - ""; - KernelServices servicesA = super.installInController(subsystemXml); - //Get the model and the describe operations from the first controller - ModelNode modelA = servicesA.readWholeModel(); - ModelNode describeOp = new ModelNode(); - describeOp.get(OP).set(DESCRIBE); - describeOp.get(OP_ADDR).set( - PathAddress.pathAddress( - PathElement.pathElement(SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME)).toModelNode()); - List operations = super.checkResultAndGetContents(servicesA.executeOperation(describeOp)).asList(); - - - //Install the describe options from the first controller into a second controller - KernelServices servicesB = super.installInController(operations); - ModelNode modelB = servicesB.readWholeModel(); - - //Make sure the models from the two controllers are identical - super.compare(modelA, modelB); - } - - /** - * Tests that the subsystem can be removed - */ - @Test - public void testSubsystemRemoval() throws Exception { - //Parse the subsystem xml and install into the first controller - String subsystemXml = - "" + - ""; - KernelServices services = super.installInController(subsystemXml); - //Checks that the subsystem was removed from the model - super.assertRemoveSubsystemResources(services); - - //TODO Chek that any services that were installed were removed here - } -} diff --git a/integration/pom.xml b/integration/pom.xml index f79be4ec40..5c1f1328c8 100755 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -22,9 +22,7 @@ as7-eap6/adapter jetty undertow - wildfly-adapter - wildfly-extensions - keycloak-subsystem + wildfly keycloak-as7-subsystem js installed diff --git a/integration/wildfly/pom.xml b/integration/wildfly/pom.xml new file mode 100644 index 0000000000..25df76d261 --- /dev/null +++ b/integration/wildfly/pom.xml @@ -0,0 +1,22 @@ + + + keycloak-parent + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../../pom.xml + + Keycloak WildFly Integration + + 4.0.0 + + keycloak-wildfly-integration-pom + pom + + + wildfly-adapter + wildfly-extensions + wildfly-server-subsystem + wildfly-adapter-subsystem + + \ No newline at end of file diff --git a/integration/wildfly/wildfly-adapter-subsystem/pom.xml b/integration/wildfly/wildfly-adapter-subsystem/pom.xml new file mode 100755 index 0000000000..0a28a652e3 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/pom.xml @@ -0,0 +1,105 @@ + + + + 4.0.0 + + + org.keycloak + keycloak-parent + 1.3.0.Beta1-SNAPSHOT + ../../../pom.xml + + + keycloak-wildfly-adapter-subsystem + Keycloak Adapter Subsystem + + jar + + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + true + + + jboss.home + ${jboss.home} + + + + **/*TestCase.java + + + + + + + + + org.wildfly.core + wildfly-controller + provided + + + org.wildfly.core + wildfly-server + provided + + + org.wildfly + wildfly-web-common + provided + + + org.jboss.logging + jboss-logging-annotations + ${jboss-logging-tools.version} + + provided + true + + + + org.jboss.logging + jboss-logging-processor + + provided + true + + + + org.wildfly.core + wildfly-subsystem-test-framework + test + + + junit + junit + test + + + org.keycloak + keycloak-wildfly-adapter + ${project.version} + + + diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java similarity index 81% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java index 17f7928198..2b9852c32e 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java @@ -15,17 +15,13 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.dmr.ModelNode; -import org.jboss.msc.service.ServiceController; - -import java.util.List; /** * Add a credential to a deployment. @@ -39,7 +35,7 @@ public class CredentialAddHandler extends AbstractAddStepHandler { } @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addCredential(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java index 212f8fa51c..77dfd9db22 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.PathElement; @@ -36,7 +36,6 @@ public class CredentialDefinition extends SimpleResourceDefinition { protected static final AttributeDefinition VALUE = new SimpleAttributeDefinitionBuilder("value", ModelType.STRING, false) - .setXmlName("value") .setAllowExpression(true) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) .build(); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java index 75b334d3dd..7aff17f171 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractWriteAttributeHandler; import org.jboss.as.controller.OperationContext; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java index 0023d41cc1..36923f08df 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractRemoveStepHandler; import org.jboss.as.controller.OperationContext; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java index bebf6dbe54..f6246273e2 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.server.deployment.DeploymentPhaseContext; import org.jboss.as.server.deployment.DeploymentUnit; @@ -26,7 +26,7 @@ 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; -import org.keycloak.subsystem.logging.KeycloakLogger; +import org.keycloak.subsystem.adapter.logging.KeycloakLogger; import java.util.ArrayList; import java.util.List; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java similarity index 88% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java index 81bb610138..c6f616adce 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java @@ -15,11 +15,10 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.dmr.ModelNode; import org.jboss.dmr.Property; -import org.jboss.logging.Logger; import java.util.HashMap; import java.util.Map; @@ -33,7 +32,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 { - protected Logger log = Logger.getLogger(KeycloakAdapterConfigService.class); + private static final String CREDENTIALS_JSON_NAME = "credentials"; private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); @@ -47,30 +46,10 @@ public final class KeycloakAdapterConfigService { // keycloak-secured deployments private final Map secureDeployments = new HashMap(); - // key=auth-server deployment name; value=web-context - private final Map webContexts = new HashMap(); - - private KeycloakAdapterConfigService() { } - public void addServerDeployment(String deploymentName, String webContext) { - this.webContexts.put(deploymentName, webContext); - } - - public String getWebContext(String deploymentName) { - return webContexts.get(deploymentName); - } - - public void removeServerDeployment(String deploymentName) { - this.webContexts.remove(deploymentName); - } - - public boolean isWebContextUsed(String webContext) { - return webContexts.containsValue(webContext); - } - public void addRealm(ModelNode operation, ModelNode model) { this.realms.put(realmNameFromOp(operation), model.clone()); } @@ -197,8 +176,4 @@ public final class KeycloakAdapterConfigService { return this.secureDeployments.containsKey(deploymentName); } - - public boolean isKeycloakServerDeployment(String deploymentName) { - return this.webContexts.containsKey(deploymentName); - } } diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java new file mode 100755 index 0000000000..3e968b4af6 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java @@ -0,0 +1,67 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.keycloak.subsystem.adapter.extension; + +import org.jboss.as.server.deployment.Attachments; +import org.jboss.as.server.deployment.DeploymentPhaseContext; +import org.jboss.as.server.deployment.DeploymentUnit; +import org.jboss.as.server.deployment.DeploymentUnitProcessingException; +import org.jboss.as.server.deployment.DeploymentUnitProcessor; +import org.jboss.as.server.deployment.module.ModuleDependency; +import org.jboss.as.server.deployment.module.ModuleSpecification; +import org.jboss.modules.Module; +import org.jboss.modules.ModuleIdentifier; +import org.jboss.modules.ModuleLoader; + +/** + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public abstract class KeycloakDependencyProcessor implements DeploymentUnitProcessor { + + private static final ModuleIdentifier KEYCLOAK_JBOSS_CORE_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-jboss-adapter-core"); + private static final ModuleIdentifier KEYCLOAK_CORE_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-adapter-core"); + private static final ModuleIdentifier KEYCLOAK_CORE = ModuleIdentifier.create("org.keycloak.keycloak-core"); + + @Override + public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { + final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); + + // Next phase, need to detect if this is a Keycloak deployment. If not, don't add the modules. + + final ModuleSpecification moduleSpecification = deploymentUnit.getAttachment(Attachments.MODULE_SPECIFICATION); + final ModuleLoader moduleLoader = Module.getBootModuleLoader(); + addCommonModules(moduleSpecification, moduleLoader); + addPlatformSpecificModules(moduleSpecification, moduleLoader); + } + + private void addCommonModules(ModuleSpecification moduleSpecification, ModuleLoader moduleLoader) { + // ModuleDependency(ModuleLoader moduleLoader, ModuleIdentifier identifier, boolean optional, boolean export, boolean importServices, boolean userSpecified) + moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_JBOSS_CORE_ADAPTER, false, false, false, false)); + moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_CORE_ADAPTER, false, false, false, false)); + moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_CORE, false, false, false, false)); + } + + abstract protected void addPlatformSpecificModules(ModuleSpecification moduleSpecification, ModuleLoader moduleLoader); + + @Override + public void undeploy(DeploymentUnit du) { + + } + +} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java similarity index 66% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java index 7c084d11d1..a11bd01d68 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.server.deployment.module.ModuleDependency; import org.jboss.as.server.deployment.module.ModuleSpecification; @@ -23,17 +23,19 @@ import org.jboss.modules.ModuleIdentifier; import org.jboss.modules.ModuleLoader; /** - * Adds platform-specific modules for EAP6 + * Add platform-specific modules for WildFly. * * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. */ -public class KeycloakDependencyProcessorEAP6 extends KeycloakDependencyProcessor { +public class KeycloakDependencyProcessorWildFly extends KeycloakDependencyProcessor { - private static final ModuleIdentifier KEYCLOAK_AS7_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-as7-adapter"); + private static final ModuleIdentifier KEYCLOAK_WILDFLY_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-wildfly-adapter"); + private static final ModuleIdentifier KEYCLOAK_UNDERTOW_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-undertow-adapter"); @Override protected void addPlatformSpecificModules(ModuleSpecification moduleSpecification, ModuleLoader moduleLoader) { // ModuleDependency(ModuleLoader moduleLoader, ModuleIdentifier identifier, boolean optional, boolean export, boolean importServices, boolean userSpecified) - moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_AS7_ADAPTER, false, false, true, false)); + moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_WILDFLY_ADAPTER, false, false, true, false)); + moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_UNDERTOW_ADAPTER, false, false, false, false)); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java similarity index 82% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java index 1816ad27ba..31f69572e2 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java @@ -14,18 +14,18 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; -import org.keycloak.subsystem.extension.authserver.AuthServerDefinition; import org.jboss.as.controller.Extension; import org.jboss.as.controller.ExtensionContext; +import org.jboss.as.controller.ModelVersion; import org.jboss.as.controller.PathElement; import org.jboss.as.controller.ResourceDefinition; import org.jboss.as.controller.SubsystemRegistration; import org.jboss.as.controller.descriptions.StandardResourceDescriptionResolver; import org.jboss.as.controller.parsing.ExtensionParsingContext; import org.jboss.as.controller.registry.ManagementResourceRegistration; -import org.keycloak.subsystem.logging.KeycloakLogger; +import org.keycloak.subsystem.adapter.logging.KeycloakLogger; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.SUBSYSTEM; @@ -38,16 +38,13 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.SUB public class KeycloakExtension implements Extension { public static final String SUBSYSTEM_NAME = "keycloak"; - public static final String NAMESPACE = "urn:jboss:domain:keycloak:1.0"; + public static final String NAMESPACE = "urn:jboss:domain:keycloak:1.1"; private static final KeycloakSubsystemParser PARSER = new KeycloakSubsystemParser(); static final PathElement PATH_SUBSYSTEM = PathElement.pathElement(SUBSYSTEM, SUBSYSTEM_NAME); private static final String RESOURCE_NAME = KeycloakExtension.class.getPackage().getName() + ".LocalDescriptions"; - private static final int MANAGEMENT_API_MAJOR_VERSION = 1; - private static final int MANAGEMENT_API_MINOR_VERSION = 0; - private static final int MANAGEMENT_API_MICRO_VERSION = 0; - protected static final PathElement SUBSYSTEM_PATH = PathElement.pathElement(SUBSYSTEM, SUBSYSTEM_NAME); + private static final ModelVersion MGMT_API_VERSION = ModelVersion.create(1,1,0); + static final PathElement SUBSYSTEM_PATH = PathElement.pathElement(SUBSYSTEM, SUBSYSTEM_NAME); private static final ResourceDefinition KEYCLOAK_SUBSYSTEM_RESOURCE = new KeycloakSubsystemDefinition(); - static final AuthServerDefinition AUTH_SERVER_DEFINITION = new AuthServerDefinition(); static final RealmDefinition REALM_DEFINITION = new RealmDefinition(); static final SecureDeploymentDefinition SECURE_DEPLOYMENT_DEFINITION = new SecureDeploymentDefinition(); static final CredentialDefinition CREDENTIAL_DEFINITION = new CredentialDefinition(); @@ -74,11 +71,9 @@ public class KeycloakExtension implements Extension { @Override public void initialize(final ExtensionContext context) { KeycloakLogger.ROOT_LOGGER.debug("Activating Keycloak Extension"); - final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MANAGEMENT_API_MAJOR_VERSION, - MANAGEMENT_API_MINOR_VERSION, MANAGEMENT_API_MICRO_VERSION); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION); ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); - registration.registerSubModel(AUTH_SERVER_DEFINITION); registration.registerSubModel(REALM_DEFINITION); ManagementResourceRegistration secureDeploymentRegistration = registration.registerSubModel(SECURE_DEPLOYMENT_DEFINITION); secureDeploymentRegistration.registerSubModel(CREDENTIAL_DEFINITION); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java similarity index 59% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java index 386f8c57bc..81ad1ce5db 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java @@ -14,23 +14,17 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.as.server.AbstractDeploymentChainStep; import org.jboss.as.server.DeploymentProcessorTarget; import org.jboss.as.server.deployment.Phase; import org.jboss.dmr.ModelNode; -import org.jboss.msc.service.ServiceController; -import java.util.List; -import org.jboss.as.controller.registry.Resource; import org.jboss.as.server.deployment.DeploymentUnitProcessor; -import org.keycloak.subsystem.extension.authserver.KeycloakServerDeploymentProcessor; /** * The Keycloak subsystem add update handler. @@ -42,14 +36,7 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); @Override - protected void populateModel(OperationContext context, ModelNode operation, Resource resource) throws OperationFailedException { - resource.getModel().setEmptyObject(); - - - } - - @Override - protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) { + protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model) { context.addStep(new AbstractDeploymentChainStep() { @Override protected void execute(DeploymentProcessorTarget processorTarget) { @@ -58,32 +45,15 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { Phase.POST_MODULE, // PHASE Phase.POST_MODULE_VALIDATOR_FACTORY - 1, // PRIORITY chooseConfigDeploymentProcessor()); - processorTarget.addDeploymentProcessor(KeycloakExtension.SUBSYSTEM_NAME, - Phase.POST_MODULE, // PHASE - Phase.POST_MODULE_VALIDATOR_FACTORY - 1, // PRIORITY - new KeycloakServerDeploymentProcessor()); } }, OperationContext.Stage.RUNTIME); } private DeploymentUnitProcessor chooseDependencyProcessor() { - if (Environment.isWildFly()) { - return new KeycloakDependencyProcessorWildFly(); - } else { - return new KeycloakDependencyProcessorEAP6(); - } + return new KeycloakDependencyProcessorWildFly(); } private DeploymentUnitProcessor chooseConfigDeploymentProcessor() { - if (Environment.isWildFly()) { - return new KeycloakAdapterConfigDeploymentProcessor(); - } else { - return new KeycloakAdapterConfigDeploymentProcessorEAP6(); - } - } - - @Override - protected boolean requiresRuntimeVerification() { - return false; + return new KeycloakAdapterConfigDeploymentProcessor(); } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java similarity index 86% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java index fe9b57b37a..975fc6c503 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java @@ -15,12 +15,10 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; -import org.jboss.as.controller.PathElement; import org.jboss.as.controller.ReloadRequiredRemoveStepHandler; import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.descriptions.ModelDescriptionConstants; import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; import org.jboss.as.controller.registry.ManagementResourceRegistration; @@ -31,7 +29,7 @@ import org.jboss.as.controller.registry.ManagementResourceRegistration; */ public class KeycloakSubsystemDefinition extends SimpleResourceDefinition { protected KeycloakSubsystemDefinition() { - super(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), + super(KeycloakExtension.SUBSYSTEM_PATH, KeycloakExtension.getResourceDescriptionResolver("subsystem"), KeycloakSubsystemAdd.INSTANCE, ReloadRequiredRemoveStepHandler.INSTANCE diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemParser.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java similarity index 82% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemParser.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java index 3cb5fadc9b..3c63f7e832 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemParser.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java @@ -14,9 +14,8 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; -import org.keycloak.subsystem.extension.authserver.AuthServerDefinition; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.PathElement; @@ -59,8 +58,6 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader
  • list) throws XMLStreamException { - String authServerName = readNameAttribute(reader); - ModelNode addAuthServer = new ModelNode(); - addAuthServer.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); - PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), - PathElement.pathElement(AuthServerDefinition.TAG_NAME, authServerName)); - addAuthServer.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); - - while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { - String tagName = reader.getLocalName(); - SimpleAttributeDefinition def = AuthServerDefinition.lookup(tagName); - if (def == null) throw new XMLStreamException("Unknown auth-server tag " + tagName); - def.parseAndSetParameter(reader.getElementText(), addAuthServer, reader); - } - - list.add(addAuthServer); - } - private void readRealm(XMLExtendedStreamReader reader, List list) throws XMLStreamException { String realmName = readNameAttribute(reader); ModelNode addRealm = new ModelNode(); @@ -178,28 +157,11 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader
  • > newControllers) throws OperationFailedException { + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addRealm(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java index e590b427d1..160a6eb202 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.PathElement; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java index 5cc319c0b2..16e43618ab 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractRemoveStepHandler; import org.jboss.as.controller.OperationContext; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java similarity index 90% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java index 13e91c5ce4..f8f5e41b10 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractWriteAttributeHandler; import org.jboss.as.controller.AttributeDefinition; @@ -23,8 +23,6 @@ import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; import org.jboss.dmr.ModelNode; -import java.util.List; - /** * Update an attribute on a realm. * @@ -32,10 +30,6 @@ import java.util.List; */ public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { - public RealmWriteAttributeHandler(List definitions) { - this(definitions.toArray(new AttributeDefinition[definitions.size()])); - } - public RealmWriteAttributeHandler(AttributeDefinition... definitions) { super(definitions); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java similarity index 86% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java index 0c36146ec6..8bf263df2e 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java @@ -15,17 +15,13 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.ServiceVerificationHandler; import org.jboss.dmr.ModelNode; -import org.jboss.msc.service.ServiceController; - -import java.util.List; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; @@ -54,7 +50,7 @@ public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { } @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); ckService.addSecureDeployment(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java similarity index 99% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java index 9cd606c34c..1932cc8e8e 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.PathElement; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java index 23196a5fff..6e2aefc1ef 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractRemoveStepHandler; import org.jboss.as.controller.OperationContext; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java index 6c87ac8601..6ed9d55b42 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractWriteAttributeHandler; import org.jboss.as.controller.AttributeDefinition; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java similarity index 99% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java index 1b3c48f0d0..f7abc0485a 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakLogger.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakLogger.java rename to integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java index 55694d22df..de0bb4b9cb 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakLogger.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.logging; +package org.keycloak.subsystem.adapter.logging; import org.jboss.logging.BasicLogger; import org.jboss.logging.Logger; diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java new file mode 100755 index 0000000000..a45b0b82a9 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java @@ -0,0 +1,34 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.adapter.logging; + +import org.jboss.logging.Messages; +import org.jboss.logging.annotations.MessageBundle; + +/** + * This interface to be fleshed out later when error messages are fully externalized. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2012 Red Hat Inc. + */ +@MessageBundle(projectCode = "KEYCLOAK") +public interface KeycloakMessages { + + /** + * The messages + */ + KeycloakMessages MESSAGES = Messages.getBundle(KeycloakMessages.class); +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension new file mode 100644 index 0000000000..b759b38f86 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension @@ -0,0 +1 @@ +org.keycloak.subsystem.adapter.extension.KeycloakExtension diff --git a/integration/keycloak-subsystem/src/main/resources/org/keycloak/subsystem/extension/LocalDescriptions.properties b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties similarity index 67% rename from integration/keycloak-subsystem/src/main/resources/org/keycloak/subsystem/extension/LocalDescriptions.properties rename to integration/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties index 46d254d7ee..c00bd8d227 100755 --- a/integration/keycloak-subsystem/src/main/resources/org/keycloak/subsystem/extension/LocalDescriptions.properties +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties @@ -1,30 +1,9 @@ -keycloak.subsystem=Keycloak subsystem -keycloak.subsystem.add=Operation Adds Keycloak subsystem -keycloak.subsystem.remove=Operation removes Keycloak subsystem -keycloak.subsystem.auth-server=Keycloak Auth Server +keycloak.subsystem=Keycloak adapter subsystem +keycloak.subsystem.add=Operation Adds Keycloak adapter subsystem +keycloak.subsystem.remove=Operation removes Keycloak adapter subsystem keycloak.subsystem.realm=A Keycloak realm. keycloak.subsystem.secure-deployment=A deployment secured by Keycloak. - -keycloak.auth-server=A Keycloak Auth Server -keycloak.auth-server.add=Add an Auth Server to the subsystem. -keycloak.auth-server.remove=Remove an Auth Server from the subsystem. -keycloak.auth-server.add-provider=Add a provider service jar to the Keycloak auth server. -keycloak.auth-server.add-provider.uploaded-file-name=The file name of the provider service jar to be added or updated. -keycloak.auth-server.add-provider.bytes-to-upload=The bytes of the provider service jar to be added or updated. -keycloak.auth-server.add-provider.redeploy=Redeploy the auth server after adding the provider. Ignored if auth server is disabled. -keycloak.auth-server.add-provider.overwrite=Overwrite even if the uploaded-file-name already exists as an overlay. -keycloak.auth-server.list-overlays=List the overlays uploaded for this auth server. -keycloak.auth-server.remove-overlay=Remove a provider jar, theme jar, or keycloak-server.json that has been uploaded to the auth server. -keycloak.auth-server.remove-overlay.overlay-file-path=The uploaded path and file name of the overlay to be removed. -keycloak.auth-server.remove-overlay.redeploy=Redeploy the auth server after removing the overlay. -keycloak.auth-server.update-server-config=Upload a new keycloak-server.json configuration file for the Keycloak auth server. -keycloak.auth-server.update-server-config.bytes-to-upload=The bytes of the keycloak-server.json file to be added or updated. -keycloak.auth-server.update-server-config.redeploy=Redeploy the auth server after updating the server config. -keycloak.auth-server.update-server-config.overwrite=Overwrite even if keycloak-server.json already exitss as an overlay. -keycloak.auth-server.enabled=Enable or disable the Auth Server. -keycloak.auth-server.web-context=Web context the auth-server will use. Also, the module name of the auth-server deployment. - keycloak.realm=A Keycloak realm. keycloak.realm.add=Add a realm definition to the subsystem. keycloak.realm.remove=Remove a realm from the subsystem. diff --git a/integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd similarity index 95% rename from integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd rename to integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd index 17d6aa6f23..269b3232dd 100755 --- a/integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd @@ -1,8 +1,8 @@ @@ -14,7 +14,7 @@ @@ -40,7 +40,7 @@ - + @@ -67,7 +67,7 @@ - + diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml new file mode 100644 index 0000000000..a2187f6e1f --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml @@ -0,0 +1,7 @@ + + + + org.keycloak.keycloak-adapter-subsystem + + + diff --git a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/RealmDefinitionTestCase.java b/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java similarity index 98% rename from integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/RealmDefinitionTestCase.java rename to integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java index c21ff20ce6..92a1958a59 100755 --- a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/RealmDefinitionTestCase.java +++ b/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java @@ -14,16 +14,13 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; - +package org.keycloak.subsystem.adapter.extension; import org.jboss.dmr.ModelNode; import org.junit.Assert; import org.junit.Before; import org.junit.Test; - - /** * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java b/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java new file mode 100755 index 0000000000..baa131b09d --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java @@ -0,0 +1,75 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.adapter.extension; + +import org.jboss.as.subsystem.test.AbstractSubsystemBaseTest; +import org.jboss.dmr.ModelNode; +import org.junit.Test; + +import java.io.IOException; + + +/** + * Tests all management expects for subsystem, parsing, marshaling, model definition and other + * Here is an example that allows you a fine grained controller over what is tested and how. So it can give you ideas what can be done and tested. + * If you have no need for advanced testing of subsystem you look at {@link SubsystemBaseParsingTestCase} that testes same stuff but most of the code + * is hidden inside of test harness + * + * @author Kabir Khan + * @author Tomaz Cerar + * @author Marko Strukelj + */ +public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { + + public SubsystemParsingTestCase() { + super(KeycloakExtension.SUBSYSTEM_NAME, new KeycloakExtension()); + } + + @Test + public void testJson() throws Exception { + ModelNode node = new ModelNode(); + node.get("realm").set("demo"); + node.get("resource").set("customer-portal"); + node.get("realm-public-key").set("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); + node.get("auth-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/login"); + node.get("code-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/access/codes"); + node.get("ssl-required").set("external"); + node.get("expose-token").set(true); + ModelNode credential = new ModelNode(); + credential.get("password").set("password"); + node.get("credentials").set(credential); + + System.out.println("json=" + node.toJSONString(false)); + } + + @Override + protected String getSubsystemXml() throws IOException { + return readResource("keycloak-1.1.xml"); + } + + @Override + protected String getSubsystemXsdPath() throws Exception { + return "schema/wildfly-keycloak_1_1.xsd"; + } + + @Override + protected String[] getSubsystemTemplatePaths() throws IOException { + return new String[]{ + "/subsystem-templates/keycloak-adapter.xml" + }; + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml b/integration/wildfly/wildfly-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml new file mode 100644 index 0000000000..2d12d88576 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml @@ -0,0 +1,24 @@ + + + master + web-console + true + + MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4siLKUew0WYxdtq6/rwk4Uj/4amGFFnE/yzIxQVU0PUqz3QBRVkUWpDj0K6ZnS5nzJV/y6DHLEy7hjZTdRDphyF1sq09aDOYnVpzu8o2sIlMM8q5RnUyEfIyUZqwo8pSZDJ90fS0s+IDUJNCSIrAKO3w1lqZDHL6E/YFHXyzkvQIDAQAB + + http://localhost:8080/auth + EXTERNAL + 0aa31d98-e0aa-404c-b6e0-e771dba1e798 + + + master + http-endpoint + true + + MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4siLKUew0WYxdtq6/rwk4Uj/4amGFFnE/yzIxQVU0PUqz3QBRVkUWpDj0K6ZnS5nzJV/y6DHLEy7hjZTdRDphyF1sq09aDOYnVpzu8o2sIlMM8q5RnUyEfIyUZqwo8pSZDJ90fS0s+IDUJNCSIrAKO3w1lqZDHL6E/YFHXyzkvQIDAQAB + + http://localhost:8080/auth + EXTERNAL + 2769a4a2-5be0-454f-838f-f33b7755b667 + + \ No newline at end of file diff --git a/integration/wildfly-adapter/pom.xml b/integration/wildfly/wildfly-adapter/pom.xml similarity index 95% rename from integration/wildfly-adapter/pom.xml rename to integration/wildfly/wildfly-adapter/pom.xml index ee4568b647..bd61b44053 100755 --- a/integration/wildfly-adapter/pom.xml +++ b/integration/wildfly/wildfly-adapter/pom.xml @@ -1,104 +1,104 @@ - - - - keycloak-parent - org.keycloak - 1.3.0.Beta1-SNAPSHOT - ../../pom.xml - - 4.0.0 - - keycloak-wildfly-adapter - Keycloak Wildfly Integration - - - - - org.jboss.logging - jboss-logging - ${jboss.logging.version} - provided - - - org.keycloak - keycloak-core - - - org.keycloak - keycloak-adapter-core - - - org.keycloak - keycloak-undertow-adapter - - - 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.picketbox - picketbox - 4.0.20.Final - provided - - - org.jboss.spec.javax.servlet - jboss-servlet-api_3.0_spec - provided - - - - io.undertow - undertow-servlet - provided - - - io.undertow - undertow-core - provided - - - junit - junit - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven.compiler.source} - ${maven.compiler.target} - - - - - - + + + + keycloak-parent + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../../../pom.xml + + 4.0.0 + + keycloak-wildfly-adapter + Keycloak Wildfly Integration + + + + + org.jboss.logging + jboss-logging + ${jboss.logging.version} + provided + + + org.keycloak + keycloak-core + + + org.keycloak + keycloak-adapter-core + + + org.keycloak + keycloak-undertow-adapter + + + 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.picketbox + picketbox + 4.0.20.Final + provided + + + org.jboss.spec.javax.servlet + jboss-servlet-api_3.0_spec + provided + + + + io.undertow + undertow-servlet + provided + + + io.undertow + undertow-core + provided + + + junit + junit + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + \ No newline at end of file diff --git a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java similarity index 97% rename from integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java rename to integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java index 9838772b12..5f13cd6769 100755 --- a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java +++ b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java @@ -1,116 +1,116 @@ -package org.keycloak.adapters.wildfly; - -import org.jboss.security.NestableGroup; -import org.jboss.security.SecurityConstants; -import org.jboss.security.SecurityContextAssociation; -import org.jboss.security.SimpleGroup; -import org.jboss.security.SimplePrincipal; -import org.keycloak.adapters.KeycloakAccount; - -import javax.security.auth.Subject; -import java.security.Principal; -import java.security.acl.Group; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Set; - -/** - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class SecurityInfoHelper { - public static void propagateSessionInfo(KeycloakAccount account) { - Subject subject = new Subject(); - Set principals = subject.getPrincipals(); - principals.add(account.getPrincipal()); - Group[] roleSets = getRoleSets(account.getRoles()); - 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(account.getPrincipal()); - principals.add(callerGroup); - org.jboss.security.SecurityContext sc = SecurityContextAssociation.getSecurityContext(); - Principal userPrincipal = getPrincipal(subject); - sc.getUtil().createSubjectInfo(userPrincipal, account, subject); - } - - /** - * 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 static 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 static 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 static Group[] getRoleSets(Collection roleSet) { - SimpleGroup roles = new SimpleGroup("Roles"); - Group[] roleSets = {roles}; - for (String role : roleSet) { - roles.addMember(new SimplePrincipal(role)); - } - return roleSets; - } -} +package org.keycloak.adapters.wildfly; + +import org.jboss.security.NestableGroup; +import org.jboss.security.SecurityConstants; +import org.jboss.security.SecurityContextAssociation; +import org.jboss.security.SimpleGroup; +import org.jboss.security.SimplePrincipal; +import org.keycloak.adapters.KeycloakAccount; + +import javax.security.auth.Subject; +import java.security.Principal; +import java.security.acl.Group; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.Set; + +/** + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class SecurityInfoHelper { + public static void propagateSessionInfo(KeycloakAccount account) { + Subject subject = new Subject(); + Set principals = subject.getPrincipals(); + principals.add(account.getPrincipal()); + Group[] roleSets = getRoleSets(account.getRoles()); + 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(account.getPrincipal()); + principals.add(callerGroup); + org.jboss.security.SecurityContext sc = SecurityContextAssociation.getSecurityContext(); + Principal userPrincipal = getPrincipal(subject); + sc.getUtil().createSubjectInfo(userPrincipal, account, subject); + } + + /** + * 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 static 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 static 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 static Group[] getRoleSets(Collection roleSet) { + SimpleGroup roles = new SimpleGroup("Roles"); + Group[] roleSets = {roles}; + for (String role : roleSet) { + roles.addMember(new SimplePrincipal(role)); + } + return roleSets; + } +} diff --git a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java similarity index 98% rename from integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java rename to integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java index 85f8bd318d..53d8e0c02c 100755 --- a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java +++ b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java @@ -1,35 +1,35 @@ -package org.keycloak.adapters.wildfly; - -import io.undertow.security.api.SecurityContext; -import io.undertow.server.HttpServerExchange; -import io.undertow.servlet.api.ConfidentialPortManager; -import org.keycloak.adapters.AdapterDeploymentContext; -import org.keycloak.adapters.AdapterTokenStore; -import org.keycloak.adapters.KeycloakDeployment; -import org.keycloak.adapters.NodesRegistrationManagement; -import org.keycloak.adapters.undertow.ServletKeycloakAuthMech; -import org.keycloak.adapters.undertow.ServletRequestAuthenticator; -import org.keycloak.adapters.undertow.UndertowHttpFacade; -import org.keycloak.adapters.undertow.UndertowUserSessionManagement; - -/** - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class WildflyAuthenticationMechanism extends ServletKeycloakAuthMech { - - public WildflyAuthenticationMechanism(AdapterDeploymentContext deploymentContext, - UndertowUserSessionManagement userSessionManagement, - NodesRegistrationManagement nodesRegistrationManagement, - ConfidentialPortManager portManager, String errorPage) { - super(deploymentContext, userSessionManagement, nodesRegistrationManagement, portManager, errorPage); - } - - @Override - protected ServletRequestAuthenticator createRequestAuthenticator(KeycloakDeployment deployment, HttpServerExchange exchange, SecurityContext securityContext, UndertowHttpFacade facade) { - int confidentialPort = getConfidentilPort(exchange); - AdapterTokenStore tokenStore = getTokenStore(exchange, facade, deployment, securityContext); - return new WildflyRequestAuthenticator(facade, deployment, - confidentialPort, securityContext, exchange, tokenStore); - } -} +package org.keycloak.adapters.wildfly; + +import io.undertow.security.api.SecurityContext; +import io.undertow.server.HttpServerExchange; +import io.undertow.servlet.api.ConfidentialPortManager; +import org.keycloak.adapters.AdapterDeploymentContext; +import org.keycloak.adapters.AdapterTokenStore; +import org.keycloak.adapters.KeycloakDeployment; +import org.keycloak.adapters.NodesRegistrationManagement; +import org.keycloak.adapters.undertow.ServletKeycloakAuthMech; +import org.keycloak.adapters.undertow.ServletRequestAuthenticator; +import org.keycloak.adapters.undertow.UndertowHttpFacade; +import org.keycloak.adapters.undertow.UndertowUserSessionManagement; + +/** + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class WildflyAuthenticationMechanism extends ServletKeycloakAuthMech { + + public WildflyAuthenticationMechanism(AdapterDeploymentContext deploymentContext, + UndertowUserSessionManagement userSessionManagement, + NodesRegistrationManagement nodesRegistrationManagement, + ConfidentialPortManager portManager, String errorPage) { + super(deploymentContext, userSessionManagement, nodesRegistrationManagement, portManager, errorPage); + } + + @Override + protected ServletRequestAuthenticator createRequestAuthenticator(KeycloakDeployment deployment, HttpServerExchange exchange, SecurityContext securityContext, UndertowHttpFacade facade) { + int confidentialPort = getConfidentilPort(exchange); + AdapterTokenStore tokenStore = getTokenStore(exchange, facade, deployment, securityContext); + return new WildflyRequestAuthenticator(facade, deployment, + confidentialPort, securityContext, exchange, tokenStore); + } +} diff --git a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java similarity index 98% rename from integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java rename to integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java index 2e432857cd..4735deb03b 100755 --- a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java +++ b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java @@ -1,25 +1,25 @@ -package org.keycloak.adapters.wildfly; - -import io.undertow.servlet.api.DeploymentInfo; -import org.jboss.logging.Logger; -import org.keycloak.adapters.AdapterDeploymentContext; -import org.keycloak.adapters.NodesRegistrationManagement; -import org.keycloak.adapters.undertow.KeycloakServletExtension; -import org.keycloak.adapters.undertow.ServletKeycloakAuthMech; -import org.keycloak.adapters.undertow.UndertowUserSessionManagement; - -/** - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class WildflyKeycloakServletExtension extends KeycloakServletExtension { - protected static Logger log = Logger.getLogger(WildflyKeycloakServletExtension.class); - - @Override - protected ServletKeycloakAuthMech createAuthenticationMechanism(DeploymentInfo deploymentInfo, AdapterDeploymentContext deploymentContext, - UndertowUserSessionManagement userSessionManagement, NodesRegistrationManagement nodesRegistrationManagement) { - log.debug("creating WildflyAuthenticationMechanism"); - return new WildflyAuthenticationMechanism(deploymentContext, userSessionManagement, nodesRegistrationManagement, deploymentInfo.getConfidentialPortManager(), getErrorPage(deploymentInfo)); - - } -} +package org.keycloak.adapters.wildfly; + +import io.undertow.servlet.api.DeploymentInfo; +import org.jboss.logging.Logger; +import org.keycloak.adapters.AdapterDeploymentContext; +import org.keycloak.adapters.NodesRegistrationManagement; +import org.keycloak.adapters.undertow.KeycloakServletExtension; +import org.keycloak.adapters.undertow.ServletKeycloakAuthMech; +import org.keycloak.adapters.undertow.UndertowUserSessionManagement; + +/** + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class WildflyKeycloakServletExtension extends KeycloakServletExtension { + protected static Logger log = Logger.getLogger(WildflyKeycloakServletExtension.class); + + @Override + protected ServletKeycloakAuthMech createAuthenticationMechanism(DeploymentInfo deploymentInfo, AdapterDeploymentContext deploymentContext, + UndertowUserSessionManagement userSessionManagement, NodesRegistrationManagement nodesRegistrationManagement) { + log.debug("creating WildflyAuthenticationMechanism"); + return new WildflyAuthenticationMechanism(deploymentContext, userSessionManagement, nodesRegistrationManagement, deploymentInfo.getConfidentialPortManager(), getErrorPage(deploymentInfo)); + + } +} diff --git a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java similarity index 97% rename from integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java rename to integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java index 84074d67f0..7930d95317 100755 --- a/integration/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java +++ b/integration/wildfly/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java @@ -1,137 +1,137 @@ -package org.keycloak.adapters.wildfly; - -import io.undertow.security.api.SecurityContext; -import io.undertow.server.HttpServerExchange; -import org.jboss.logging.Logger; -import org.jboss.security.NestableGroup; -import org.jboss.security.SecurityConstants; -import org.jboss.security.SecurityContextAssociation; -import org.jboss.security.SimpleGroup; -import org.jboss.security.SimplePrincipal; -import org.keycloak.adapters.AdapterTokenStore; -import org.keycloak.adapters.HttpFacade; -import org.keycloak.adapters.KeycloakDeployment; -import org.keycloak.adapters.undertow.KeycloakUndertowAccount; -import org.keycloak.adapters.undertow.ServletRequestAuthenticator; -import org.keycloak.adapters.undertow.UndertowUserSessionManagement; - -import javax.security.auth.Subject; -import java.security.Principal; -import java.security.acl.Group; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.Set; - -/** - * @author Bill Burke - * @version $Revision: 1 $ - */ -public class WildflyRequestAuthenticator extends ServletRequestAuthenticator { - protected static Logger log = Logger.getLogger(WildflyRequestAuthenticator.class); - - public WildflyRequestAuthenticator(HttpFacade facade, KeycloakDeployment deployment, int sslRedirectPort, - SecurityContext securityContext, HttpServerExchange exchange, - AdapterTokenStore tokenStore) { - super(facade, deployment, sslRedirectPort, securityContext, exchange, tokenStore); - } - - @Override - protected void propagateKeycloakContext(KeycloakUndertowAccount account) { - super.propagateKeycloakContext(account); - SecurityInfoHelper.propagateSessionInfo(account); - log.debug("propagate security context to wildfly"); - Subject subject = new Subject(); - Set principals = subject.getPrincipals(); - principals.add(account.getPrincipal()); - Group[] roleSets = getRoleSets(account.getRoles()); - 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(account.getPrincipal()); - principals.add(callerGroup); - org.jboss.security.SecurityContext sc = SecurityContextAssociation.getSecurityContext(); - Principal userPrincipal = getPrincipal(subject); - sc.getUtil().createSubjectInfo(userPrincipal, account, subject); - } - - /** - * 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; - } - -} +package org.keycloak.adapters.wildfly; + +import io.undertow.security.api.SecurityContext; +import io.undertow.server.HttpServerExchange; +import org.jboss.logging.Logger; +import org.jboss.security.NestableGroup; +import org.jboss.security.SecurityConstants; +import org.jboss.security.SecurityContextAssociation; +import org.jboss.security.SimpleGroup; +import org.jboss.security.SimplePrincipal; +import org.keycloak.adapters.AdapterTokenStore; +import org.keycloak.adapters.HttpFacade; +import org.keycloak.adapters.KeycloakDeployment; +import org.keycloak.adapters.undertow.KeycloakUndertowAccount; +import org.keycloak.adapters.undertow.ServletRequestAuthenticator; +import org.keycloak.adapters.undertow.UndertowUserSessionManagement; + +import javax.security.auth.Subject; +import java.security.Principal; +import java.security.acl.Group; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.Set; + +/** + * @author Bill Burke + * @version $Revision: 1 $ + */ +public class WildflyRequestAuthenticator extends ServletRequestAuthenticator { + protected static Logger log = Logger.getLogger(WildflyRequestAuthenticator.class); + + public WildflyRequestAuthenticator(HttpFacade facade, KeycloakDeployment deployment, int sslRedirectPort, + SecurityContext securityContext, HttpServerExchange exchange, + AdapterTokenStore tokenStore) { + super(facade, deployment, sslRedirectPort, securityContext, exchange, tokenStore); + } + + @Override + protected void propagateKeycloakContext(KeycloakUndertowAccount account) { + super.propagateKeycloakContext(account); + SecurityInfoHelper.propagateSessionInfo(account); + log.debug("propagate security context to wildfly"); + Subject subject = new Subject(); + Set principals = subject.getPrincipals(); + principals.add(account.getPrincipal()); + Group[] roleSets = getRoleSets(account.getRoles()); + 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(account.getPrincipal()); + principals.add(callerGroup); + org.jboss.security.SecurityContext sc = SecurityContextAssociation.getSecurityContext(); + Principal userPrincipal = getPrincipal(subject); + sc.getUtil().createSubjectInfo(userPrincipal, account, subject); + } + + /** + * 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; + } + +} diff --git a/integration/wildfly-adapter/src/main/resources/META-INF/services/io.undertow.servlet.ServletExtension b/integration/wildfly/wildfly-adapter/src/main/resources/META-INF/services/io.undertow.servlet.ServletExtension similarity index 100% rename from integration/wildfly-adapter/src/main/resources/META-INF/services/io.undertow.servlet.ServletExtension rename to integration/wildfly/wildfly-adapter/src/main/resources/META-INF/services/io.undertow.servlet.ServletExtension diff --git a/integration/wildfly-extensions/pom.xml b/integration/wildfly/wildfly-extensions/pom.xml similarity index 97% rename from integration/wildfly-extensions/pom.xml rename to integration/wildfly/wildfly-extensions/pom.xml index 16594e6ebf..5bdf23fe49 100755 --- a/integration/wildfly-extensions/pom.xml +++ b/integration/wildfly/wildfly-extensions/pom.xml @@ -21,7 +21,7 @@ org.keycloak keycloak-parent 1.3.0.Beta1-SNAPSHOT - ../../pom.xml + ../../../pom.xml keycloak-wildfly-extensions diff --git a/integration/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleProviderLoaderFactory.java b/integration/wildfly/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleProviderLoaderFactory.java similarity index 100% rename from integration/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleProviderLoaderFactory.java rename to integration/wildfly/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleProviderLoaderFactory.java diff --git a/integration/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleThemeProviderFactory.java b/integration/wildfly/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleThemeProviderFactory.java similarity index 100% rename from integration/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleThemeProviderFactory.java rename to integration/wildfly/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleThemeProviderFactory.java diff --git a/integration/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProviderFactory b/integration/wildfly/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProviderFactory similarity index 100% rename from integration/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProviderFactory rename to integration/wildfly/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProviderFactory diff --git a/integration/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.provider.ProviderLoaderFactory b/integration/wildfly/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.provider.ProviderLoaderFactory similarity index 100% rename from integration/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.provider.ProviderLoaderFactory rename to integration/wildfly/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.provider.ProviderLoaderFactory diff --git a/integration/keycloak-subsystem/pom.xml b/integration/wildfly/wildfly-server-subsystem/pom.xml similarity index 74% rename from integration/keycloak-subsystem/pom.xml rename to integration/wildfly/wildfly-server-subsystem/pom.xml index 80bb82c9d0..71bb0fd66e 100755 --- a/integration/keycloak-subsystem/pom.xml +++ b/integration/wildfly/wildfly-server-subsystem/pom.xml @@ -21,24 +21,16 @@ org.keycloak keycloak-parent 1.3.0.Beta1-SNAPSHOT - ../../pom.xml + ../../../pom.xml - keycloak-subsystem - Keycloak Subsystem + keycloak-wildfly-server-subsystem + Keycloak Server Subsystem jar - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven.compiler.source} - ${maven.compiler.target} - - org.apache.maven.plugins maven-surefire-plugin @@ -70,19 +62,9 @@ wildfly-server provided - - org.wildfly.core - wildfly-version - provided - org.wildfly - wildfly-ee - provided - - - org.wildfly - wildfly-undertow + wildfly-web-common provided @@ -106,8 +88,7 @@ org.wildfly.core - wildfly-subsystem-test - pom + wildfly-subsystem-test-framework test @@ -116,15 +97,10 @@ test - - org.jboss.as - jboss-as-web - 7.1.1.Final - - org.keycloak - keycloak-as7-adapter + keycloak-wildfly-adapter + ${project.version} diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java new file mode 100755 index 0000000000..7f86d7981b --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java @@ -0,0 +1,66 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.keycloak.subsystem.server.extension; + +import java.util.HashMap; +import java.util.Map; + +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADDRESS; + +/** + * This service keeps track of the entire Keycloak management model so as to provide + * adapter configuration to each deployment at deploy time. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class KeycloakAdapterConfigService { + + private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); + + public static KeycloakAdapterConfigService getInstance() { + return INSTANCE; + } + + // key=auth-server deployment name; value=web-context + private final Map webContexts = new HashMap(); + + + + private KeycloakAdapterConfigService() { + } + + public void addServerDeployment(String deploymentName, String webContext) { + this.webContexts.put(deploymentName, webContext); + } + + public String getWebContext(String deploymentName) { + return webContexts.get(deploymentName); + } + + public void removeServerDeployment(String deploymentName) { + this.webContexts.remove(deploymentName); + } + + public boolean isWebContextUsed(String webContext) { + return webContexts.containsValue(webContext); + } + + public boolean isKeycloakServerDeployment(String deploymentName) { + return this.webContexts.containsKey(deploymentName); + } +} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessor.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessor.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java index 7d646f379c..b40eb35244 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessor.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.server.deployment.Attachments; import org.jboss.as.server.deployment.DeploymentPhaseContext; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorWildFly.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorWildFly.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java index 849382b6dd..4b96aea8e0 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorWildFly.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.server.deployment.module.ModuleDependency; import org.jboss.as.server.deployment.module.ModuleSpecification; diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java new file mode 100755 index 0000000000..145b475653 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java @@ -0,0 +1,79 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.server.extension; + +import org.jboss.as.controller.Extension; +import org.jboss.as.controller.ExtensionContext; +import org.jboss.as.controller.ModelVersion; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.ResourceDefinition; +import org.jboss.as.controller.SubsystemRegistration; +import org.jboss.as.controller.descriptions.StandardResourceDescriptionResolver; +import org.jboss.as.controller.parsing.ExtensionParsingContext; +import org.jboss.as.controller.registry.ManagementResourceRegistration; +import org.keycloak.subsystem.server.extension.authserver.AuthServerDefinition; +import org.keycloak.subsystem.server.logging.KeycloakLogger; + +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.SUBSYSTEM; + + +/** + * Main Extension class for the subsystem. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class KeycloakExtension implements Extension { + + public static final String SUBSYSTEM_NAME = "keycloak-server"; + public static final String NAMESPACE = "urn:jboss:domain:keycloak-server:1.1"; + private static final KeycloakSubsystemParser PARSER = new KeycloakSubsystemParser(); + static final PathElement PATH_SUBSYSTEM = PathElement.pathElement(SUBSYSTEM, SUBSYSTEM_NAME); + private static final String RESOURCE_NAME = KeycloakExtension.class.getPackage().getName() + ".LocalDescriptions"; + private static final ModelVersion MGMT_API_VERSION = ModelVersion.create(1,1,0); + static final PathElement SUBSYSTEM_PATH = PathElement.pathElement(SUBSYSTEM, SUBSYSTEM_NAME); + private static final ResourceDefinition KEYCLOAK_SUBSYSTEM_RESOURCE = new KeycloakSubsystemDefinition(); + static final AuthServerDefinition AUTH_SERVER_DEFINITION = new AuthServerDefinition(); + + public static StandardResourceDescriptionResolver getResourceDescriptionResolver(final String... keyPrefix) { + StringBuilder prefix = new StringBuilder(SUBSYSTEM_NAME); + for (String kp : keyPrefix) { + prefix.append('.').append(kp); + } + return new StandardResourceDescriptionResolver(prefix.toString(), RESOURCE_NAME, KeycloakExtension.class.getClassLoader(), true, false); + } + + /** + * {@inheritDoc} + */ + @Override + public void initializeParsers(final ExtensionParsingContext context) { + context.setSubsystemXmlMapping(SUBSYSTEM_NAME, KeycloakExtension.NAMESPACE, PARSER); + } + + /** + * {@inheritDoc} + */ + @Override + public void initialize(final ExtensionContext context) { + KeycloakLogger.ROOT_LOGGER.debug("Activating Keycloak Extension"); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION); + + ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); + registration.registerSubModel(AUTH_SERVER_DEFINITION); + subsystem.registerXMLElementWriter(PARSER); + } +} diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java new file mode 100755 index 0000000000..622c0102f4 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java @@ -0,0 +1,55 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.server.extension; + +import org.jboss.as.controller.AbstractBoottimeAddStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.server.AbstractDeploymentChainStep; +import org.jboss.as.server.DeploymentProcessorTarget; +import org.jboss.as.server.deployment.Phase; +import org.jboss.dmr.ModelNode; + +import org.jboss.as.server.deployment.DeploymentUnitProcessor; +import org.keycloak.subsystem.server.extension.authserver.KeycloakServerDeploymentProcessor; + +/** + * The Keycloak subsystem add update handler. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { + + static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); + + @Override + protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model) { + context.addStep(new AbstractDeploymentChainStep() { + @Override + protected void execute(DeploymentProcessorTarget processorTarget) { + processorTarget.addDeploymentProcessor(KeycloakExtension.SUBSYSTEM_NAME, Phase.DEPENDENCIES, 0, chooseDependencyProcessor()); + processorTarget.addDeploymentProcessor(KeycloakExtension.SUBSYSTEM_NAME, + Phase.POST_MODULE, // PHASE + Phase.POST_MODULE_VALIDATOR_FACTORY - 1, // PRIORITY + new KeycloakServerDeploymentProcessor()); + } + }, OperationContext.Stage.RUNTIME); + } + + private DeploymentUnitProcessor chooseDependencyProcessor() { + return new KeycloakDependencyProcessorWildFly(); + } +} diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java new file mode 100644 index 0000000000..f553188251 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java @@ -0,0 +1,45 @@ +/* + * Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package org.keycloak.subsystem.server.extension; + +import org.jboss.as.controller.ReloadRequiredRemoveStepHandler; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.registry.ManagementResourceRegistration; + +/** + * Definition of subsystem=keycloak. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class KeycloakSubsystemDefinition extends SimpleResourceDefinition { + protected KeycloakSubsystemDefinition() { + super(KeycloakExtension.SUBSYSTEM_PATH, + KeycloakExtension.getResourceDescriptionResolver("subsystem"), + KeycloakSubsystemAdd.INSTANCE, + ReloadRequiredRemoveStepHandler.INSTANCE + ); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + +} diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java new file mode 100755 index 0000000000..921c576dd6 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java @@ -0,0 +1,127 @@ +/* + * Copyright 2014 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.server.extension; + +import org.keycloak.subsystem.server.extension.authserver.AuthServerDefinition; +import org.jboss.as.controller.AttributeDefinition; +import org.jboss.as.controller.PathAddress; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.descriptions.ModelDescriptionConstants; +import org.jboss.as.controller.operations.common.Util; +import org.jboss.as.controller.parsing.ParseUtils; +import org.jboss.as.controller.persistence.SubsystemMarshallingContext; +import org.jboss.dmr.ModelNode; +import org.jboss.dmr.Property; +import org.jboss.staxmapper.XMLElementReader; +import org.jboss.staxmapper.XMLElementWriter; +import org.jboss.staxmapper.XMLExtendedStreamReader; +import org.jboss.staxmapper.XMLExtendedStreamWriter; + +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import java.util.Collections; +import java.util.List; + +/** + * The subsystem parser, which uses stax to read and write to and from xml + */ +class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader>, XMLElementWriter { + + /** + * {@inheritDoc} + */ + @Override + public void readElement(final XMLExtendedStreamReader reader, final List list) throws XMLStreamException { + // Require no attributes + ParseUtils.requireNoAttributes(reader); + ModelNode addKeycloakSub = Util.createAddOperation(PathAddress.pathAddress(KeycloakExtension.PATH_SUBSYSTEM)); + list.add(addKeycloakSub); + + while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { + if (reader.getLocalName().equals(AuthServerDefinition.TAG_NAME)) { + readAuthServer(reader, list); + } + } + } + + // used for debugging + private int nextTag(XMLExtendedStreamReader reader) throws XMLStreamException { + return reader.nextTag(); + } + + private void readAuthServer(XMLExtendedStreamReader reader, List list) throws XMLStreamException { + String authServerName = readNameAttribute(reader); + ModelNode addAuthServer = new ModelNode(); + addAuthServer.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); + PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), + PathElement.pathElement(AuthServerDefinition.TAG_NAME, authServerName)); + addAuthServer.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); + + while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { + String tagName = reader.getLocalName(); + SimpleAttributeDefinition def = AuthServerDefinition.lookup(tagName); + if (def == null) throw new XMLStreamException("Unknown auth-server tag " + tagName); + def.parseAndSetParameter(reader.getElementText(), addAuthServer, reader); + } + + list.add(addAuthServer); + } + + // expects that the current tag will have one single attribute called "name" + private String readNameAttribute(XMLExtendedStreamReader reader) throws XMLStreamException { + String name = null; + for (int i = 0; i < reader.getAttributeCount(); i++) { + String attr = reader.getAttributeLocalName(i); + if (attr.equals("name")) { + name = reader.getAttributeValue(i); + continue; + } + throw ParseUtils.unexpectedAttribute(reader, i); + } + if (name == null) { + throw ParseUtils.missingRequired(reader, Collections.singleton("name")); + } + return name; + } + + /** + * {@inheritDoc} + */ + @Override + public void writeContent(final XMLExtendedStreamWriter writer, final SubsystemMarshallingContext context) throws XMLStreamException { + context.startSubsystemElement(KeycloakExtension.NAMESPACE, false); + writeAuthServers(writer, context); + writer.writeEndElement(); + } + + private void writeAuthServers(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { + if (!context.getModelNode().get(AuthServerDefinition.TAG_NAME).isDefined()) { + return; + } + for (Property authServer : context.getModelNode().get(AuthServerDefinition.TAG_NAME).asPropertyList()) { + writer.writeStartElement(AuthServerDefinition.TAG_NAME); + writer.writeAttribute("name", authServer.getName()); + ModelNode authServerElements = authServer.getValue(); + for (AttributeDefinition element : AuthServerDefinition.ALL_ATTRIBUTES) { + element.marshallAsElement(authServerElements, writer); + } + + writer.writeEndElement(); + } + } +} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java similarity index 75% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java index c701cf2232..7bf620f3d9 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java @@ -14,61 +14,63 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; + +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.REMOVE; import java.util.Set; + +import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.OperationStepHandler; import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.ProcessType; import org.jboss.as.controller.SimpleAttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.REMOVE; import org.jboss.as.controller.operations.common.Util; import org.jboss.as.controller.registry.Resource; import org.jboss.dmr.ModelNode; import org.jboss.dmr.ModelType; -import static org.keycloak.subsystem.extension.authserver.AuthServerUtil.getHandler; /** * Base class for operations that create overlays for an auth server. * * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. */ -public abstract class AbstractAddOverlayHandler implements OperationStepHandler { +public abstract class AbstractAddOverlayHandler extends AbstractAddStepHandler{ protected static final String UPLOADED_FILE_OP_NAME = "uploaded-file-name"; - - protected static final SimpleAttributeDefinition BYTES_TO_UPLOAD - = new SimpleAttributeDefinitionBuilder("bytes-to-upload", ModelType.BYTES, false) + protected static final SimpleAttributeDefinition UPLOADED_FILE_NAME =new SimpleAttributeDefinitionBuilder(UPLOADED_FILE_OP_NAME, ModelType.STRING, false) .setAllowExpression(false) .setAllowNull(false) .build(); + protected static final SimpleAttributeDefinition BYTES_TO_UPLOAD= new SimpleAttributeDefinitionBuilder("bytes-to-upload", ModelType.BYTES, false) + .setAllowExpression(false) + .build(); + static final SimpleAttributeDefinition REDEPLOY_SERVER = new SimpleAttributeDefinitionBuilder("redeploy", ModelType.BOOLEAN, true) - .setXmlName("redeploy") .setAllowExpression(true) .setDefaultValue(new ModelNode(false)) .build(); protected static final SimpleAttributeDefinition OVERWRITE = new SimpleAttributeDefinitionBuilder("overwrite", ModelType.BOOLEAN, true) - .setXmlName("overwrite") .setAllowExpression(true) .setDefaultValue(new ModelNode(false)) .build(); - @Override - public void execute(final OperationContext context, final ModelNode operation) throws OperationFailedException { - //System.out.println("*** execute operation ***"); - //System.out.println(scrub(operation)); + public AbstractAddOverlayHandler() { + super(AddProviderHandler.DEFINITION.getParameters()); + } - String uploadFileName = operation.get(UPLOADED_FILE_OP_NAME).asString(); - boolean isRedeploy = isRedeploy(context, operation); - boolean isOverwrite = getBooleanFromOperation(operation, OVERWRITE); + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + final String uploadFileName = UPLOADED_FILE_NAME.resolveModelAttribute(context, model).asString(); + final boolean isRedeploy = isRedeploy(context, operation); + final boolean isOverwrite = OVERWRITE.resolveModelAttribute(context, model).asBoolean(); String overlayPath = getOverlayPath(uploadFileName); String overlayName = AuthServerUtil.getOverlayName(operation); @@ -95,21 +97,21 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler } } - addContent(context, overlayAddress, operation.get(BYTES_TO_UPLOAD.getName()).asBytes(), overlayPath); + addContent(context, overlayAddress, BYTES_TO_UPLOAD.resolveModelAttribute(context, model).asBytes(), overlayPath); - if (isRedeploy) AuthServerUtil.addStepToRedeployAuthServer(context, deploymentName); - if (!isRedeploy) context.restartRequired(); + if (isRedeploy) { AuthServerUtil.addStepToRedeployAuthServer(context, deploymentName); } + if (!isRedeploy) { context.restartRequired(); } context.completeStep(OperationContext.ResultHandler.NOOP_RESULT_HANDLER); } static void removeContent(OperationContext context, PathAddress overlayAddress, String overlayPath) { PathAddress contentAddress = overlayAddress.append("content", overlayPath); ModelNode operation = Util.createRemoveOperation(contentAddress); - context.addStep(operation, getHandler(context, contentAddress, REMOVE), OperationContext.Stage.MODEL); + context.addStep(operation, AuthServerUtil.getHandler(context, contentAddress, REMOVE), OperationContext.Stage.MODEL); } - static boolean isRedeploy(OperationContext context, ModelNode operation) { - return isAuthServerEnabled(context) && getBooleanFromOperation(operation, REDEPLOY_SERVER); + static boolean isRedeploy(OperationContext context, ModelNode model) throws OperationFailedException { + return isAuthServerEnabled(context) && REDEPLOY_SERVER.resolveModelAttribute(context, model).asBoolean(); } private boolean isHostController(OperationContext context) { @@ -141,7 +143,7 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler // only call this if context.getProcessType() == ProcessType.HOST_CONTROLLER private void addOverlayToServerGroups(OperationContext context, PathAddress overlayAddress, ModelNode operation, String overlayName) { - String myProfile = findMyProfile(operation); + String myProfile = context.getCurrentAddressValue(); for (String serverGroup : getServerGroupNames(context)) { PathAddress address = PathAddress.pathAddress("server-group", serverGroup); ModelNode serverGroupModel = context.readResourceFromRoot(address).getModel(); @@ -156,12 +158,6 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler } } - // only call this if context.getProcessType() == ProcessType.HOST_CONTROLLER - private String findMyProfile(ModelNode operation) { - PathAddress address = PathAddress.pathAddress(operation.get("address")); - return address.getElement(0).getValue(); - } - private Set getServerGroupNames(OperationContext context) { return context.readResourceFromRoot(PathAddress.EMPTY_ADDRESS).getChildrenNames("server-group"); } @@ -180,24 +176,12 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler private void doAddStep(OperationContext context, PathAddress address, ModelNode operation) { //System.out.println("**** Adding Add Step ****"); //System.out.println(scrub(operation).toString()); - context.addStep(operation, getHandler(context, address, ADD), OperationContext.Stage.MODEL); + context.addStep(operation, AuthServerUtil.getHandler(context, address, ADD), OperationContext.Stage.MODEL); } - private static boolean isAuthServerEnabled(OperationContext context) { - boolean defaultValue = AuthServerDefinition.ENABLED.getDefaultValue().asBoolean(); + private static boolean isAuthServerEnabled(OperationContext context) throws OperationFailedException { ModelNode authServerModel = context.readResource(PathAddress.EMPTY_ADDRESS).getModel().clone(); - String attrName = AuthServerDefinition.ENABLED.getName(); - if (!authServerModel.get(attrName).isDefined()) return defaultValue; - return authServerModel.get(attrName).asBoolean(); - } - - private static boolean getBooleanFromOperation(ModelNode operation, SimpleAttributeDefinition definition) { - boolean defaultValue = definition.getDefaultValue().asBoolean(); - if (!operation.get(definition.getName()).isDefined()) { - return defaultValue; - } else { - return operation.get(definition.getName()).asBoolean(); - } + return AuthServerDefinition.ENABLED.resolveModelAttribute(context, authServerModel).asBoolean(); } // used for debugging @@ -215,7 +199,7 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler /** * Get the WAR path where the overlay will live. * - * @param file The name of the file being uploaded. + * @param fileName The name of the file being uploaded. * @return The overlay path as a String. */ abstract String getOverlayPath(String fileName); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java similarity index 75% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java index e2c99ed6f7..8d8694d199 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java @@ -15,14 +15,10 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.controller.OperationDefinition; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; import org.jboss.as.controller.SimpleOperationDefinitionBuilder; -import org.jboss.dmr.ModelNode; -import org.jboss.dmr.ModelType; /** * Operation to add a provider jar to WEB-INF/lib. @@ -33,15 +29,6 @@ public class AddProviderHandler extends AbstractAddOverlayHandler { public static final String OP = "add-provider"; - public static final AddProviderHandler INSTANCE = new AddProviderHandler(); - - protected static final SimpleAttributeDefinition UPLOADED_FILE_NAME = - new SimpleAttributeDefinitionBuilder(UPLOADED_FILE_OP_NAME, ModelType.STRING, false) - .setAllowExpression(false) - .setAllowNull(false) - .setDefaultValue(new ModelNode().set("myprovider.jar")) - .build(); - public static OperationDefinition DEFINITION = new SimpleOperationDefinitionBuilder(OP, AuthServerDefinition.rscDescriptionResolver) .addParameter(BYTES_TO_UPLOAD) .addParameter(UPLOADED_FILE_NAME) @@ -49,6 +36,8 @@ public class AddProviderHandler extends AbstractAddOverlayHandler { .addParameter(OVERWRITE) .build(); + public static final AddProviderHandler INSTANCE = new AddProviderHandler(); + private AddProviderHandler() {} @Override diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java similarity index 93% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java index 43d26ce969..e65957347d 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerAddHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; @@ -26,7 +26,7 @@ import org.jboss.dmr.ModelNode; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; import org.jboss.as.controller.registry.Resource; -import org.keycloak.subsystem.extension.KeycloakAdapterConfigService; +import org.keycloak.subsystem.server.extension.KeycloakAdapterConfigService; /** * Add an auth server. @@ -71,9 +71,4 @@ public final class AuthServerAddHandler extends AbstractAddStepHandler { authServerUtil.addStepToUploadAuthServer(context, enabled); KeycloakAdapterConfigService.getInstance().addServerDeployment(authServerUtil.getDeploymentName(), webContext); } - - @Override - protected boolean requiresRuntimeVerification() { - return false; - } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java similarity index 95% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java index 648e35d118..7cfe27bdbc 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.PathElement; @@ -34,8 +34,8 @@ import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.descriptions.ResourceDescriptionResolver; import org.jboss.as.controller.operations.validation.ParameterValidator; import org.jboss.as.controller.registry.OperationEntry; -import org.keycloak.subsystem.extension.KeycloakAdapterConfigService; -import org.keycloak.subsystem.extension.KeycloakExtension; +import org.keycloak.subsystem.server.extension.KeycloakAdapterConfigService; +import org.keycloak.subsystem.server.extension.KeycloakExtension; /** * Defines attributes and operations for an Auth Server @@ -48,7 +48,6 @@ public class AuthServerDefinition extends SimpleResourceDefinition { protected static final SimpleAttributeDefinition ENABLED = new SimpleAttributeDefinitionBuilder("enabled", ModelType.BOOLEAN, true) - .setXmlName("enabled") .setAllowExpression(true) .setDefaultValue(new ModelNode(false)) .setRestartAllServices() @@ -56,7 +55,6 @@ public class AuthServerDefinition extends SimpleResourceDefinition { protected static final SimpleAttributeDefinition WEB_CONTEXT = new SimpleAttributeDefinitionBuilder("web-context", ModelType.STRING, true) - .setXmlName("web-context") .setAllowExpression(true) .setDefaultValue(new ModelNode("auth")) .setValidator(new WebContextValidator()) diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java similarity index 95% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java index e80fbc6d75..05695ca582 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.controller.AbstractRemoveStepHandler; import org.jboss.as.controller.OperationContext; @@ -25,7 +25,7 @@ import org.jboss.as.controller.PathAddress; import org.jboss.as.controller.PathElement; import org.jboss.as.controller.operations.common.Util; import org.jboss.dmr.ModelNode; -import org.keycloak.subsystem.extension.KeycloakAdapterConfigService; +import org.keycloak.subsystem.server.extension.KeycloakAdapterConfigService; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.DEPLOYMENT; import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.REMOVE; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerUtil.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java similarity index 95% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerUtil.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java index bf8074b4e5..6814aa7df1 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerUtil.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import java.io.File; import java.net.URI; @@ -46,7 +46,7 @@ import org.jboss.dmr.ModelNode; import org.jboss.modules.Module; import org.jboss.modules.ModuleIdentifier; import org.jboss.modules.ModuleLoadException; -import org.keycloak.subsystem.extension.KeycloakExtension; +import org.keycloak.subsystem.server.extension.KeycloakExtension; /** * Utility methods that help assemble and start an auth server. @@ -55,7 +55,7 @@ import org.keycloak.subsystem.extension.KeycloakExtension; */ public class AuthServerUtil { - private static final ModuleIdentifier KEYCLOAK_SUBSYSTEM = ModuleIdentifier.create("org.keycloak.keycloak-subsystem"); + private static final ModuleIdentifier KEYCLOAK_SUBSYSTEM = ModuleIdentifier.create("org.keycloak.keycloak-server-subsystem"); private final String deploymentName; private final Module subsysModule; @@ -85,8 +85,8 @@ public class AuthServerUtil { private URI findAuthServerUri() throws IllegalStateException { try { - URL subsysJar = this.subsysModule.getExportedResource("keycloak-subsystem-" + this.keycloakVersion + ".jar"); - File subsysDir = new File(subsysJar.toURI()).getParentFile(); + URL subsysResource = this.subsysModule.getExportedResource("module.xml"); + File subsysDir = new File(subsysResource.toURI()).getParentFile(); File authServerDir = new File(subsysDir, "auth-server"); if (this.isAuthServerExploded) { return authServerDir.toURI(); @@ -110,7 +110,7 @@ public class AuthServerUtil { op.get("owner").set(new ModelNode().add("subsystem", KeycloakExtension.SUBSYSTEM_NAME)); if (authServerUri == null) { - throw new OperationFailedException("Keycloak Auth Server WAR not found in keycloak-subsystem module"); + throw new OperationFailedException("Keycloak Auth Server WAR not found in keycloak-server-subsystem module"); } op.get(CONTENT).add(makeContentItem()); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java similarity index 85% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java index 6c5d6b3235..3fd16cc6fc 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.controller.AttributeDefinition; import org.jboss.as.controller.SimpleAttributeDefinition; @@ -26,7 +26,7 @@ import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.registry.Resource; import org.jboss.dmr.ModelNode; -import org.keycloak.subsystem.extension.KeycloakAdapterConfigService; +import org.keycloak.subsystem.server.extension.KeycloakAdapterConfigService; /** * Update an attribute on an Auth Server. @@ -50,7 +50,7 @@ public class AuthServerWriteAttributeHandler extends ModelOnlyWriteAttributeHand return; } - boolean isEnabled = isEnabled(model); // is server currently enabled? + boolean isEnabled = AuthServerDefinition.ENABLED.resolveModelAttribute(context, model.getModel()).asBoolean(); String deploymentName = AuthServerUtil.getDeploymentName(operation); if (attributeName.equals(AuthServerDefinition.WEB_CONTEXT.getName())) { @@ -73,14 +73,6 @@ public class AuthServerWriteAttributeHandler extends ModelOnlyWriteAttributeHand super.finishModelStage(context, operation, attributeName, newValue, oldValue, model); } - // Is auth server currently enabled? - private boolean isEnabled(Resource model) { - ModelNode authServer = model.getModel(); - ModelNode isEnabled = authServer.get(AuthServerDefinition.ENABLED.getName()); - if (!isEnabled.isDefined()) isEnabled = AuthServerDefinition.ENABLED.getDefaultValue(); - return isEnabled.asBoolean(); - } - private boolean attribNotChanging(String attributeName, ModelNode newValue, ModelNode oldValue) { SimpleAttributeDefinition attribDef = AuthServerDefinition.lookup(attributeName); if (!oldValue.isDefined()) oldValue = attribDef.getDefaultValue(); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java similarity index 94% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java index 565310d8e2..80401cc795 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java @@ -14,14 +14,14 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.ee.component.EEModuleDescription; import org.jboss.as.server.deployment.DeploymentPhaseContext; import org.jboss.as.server.deployment.DeploymentUnit; import org.jboss.as.server.deployment.DeploymentUnitProcessingException; import org.jboss.as.server.deployment.DeploymentUnitProcessor; -import org.keycloak.subsystem.extension.KeycloakAdapterConfigService; +import org.keycloak.subsystem.server.extension.KeycloakAdapterConfigService; /** * DUP responsible for setting the web context of a Keycloak auth server. diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java index 39c5225663..4b5b17e7ea 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import java.util.Set; import java.util.TreeSet; @@ -64,8 +64,6 @@ public class ListOverlaysHandler implements OperationStepHandler { result.add(key); } } - - context.stepCompleted(); } private Set getOverlayNames(OperationContext context, String overlayName) { diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/OverlayKeycloakServerJsonHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/OverlayKeycloakServerJsonHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java index 693ee45d6c..744e264bdd 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/OverlayKeycloakServerJsonHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; import org.jboss.as.controller.OperationDefinition; import org.jboss.as.controller.SimpleOperationDefinitionBuilder; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java similarity index 86% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java index e2580ba7ff..022e96c321 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java @@ -15,7 +15,9 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; + +import static org.keycloak.subsystem.server.extension.authserver.AbstractAddOverlayHandler.REDEPLOY_SERVER; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationDefinition; @@ -41,12 +43,11 @@ public class RemoveOverlayHandler implements OperationStepHandler { new SimpleAttributeDefinitionBuilder("overlay-file-path", ModelType.STRING, false) .setAllowExpression(true) .setAllowNull(false) - .setDefaultValue(new ModelNode().set("/WEB-INF/lib/myprovider.jar")) .build(); static final OperationDefinition DEFINITION = new SimpleOperationDefinitionBuilder(REMOVE_OVERLAY_OPERATION, AuthServerDefinition.rscDescriptionResolver) .addParameter(OVERLAY_FILE_PATH) - .addParameter(AbstractAddOverlayHandler.REDEPLOY_SERVER) + .addParameter(REDEPLOY_SERVER) .build(); static final OperationStepHandler INSTANCE = new RemoveOverlayHandler(); @@ -55,9 +56,12 @@ public class RemoveOverlayHandler implements OperationStepHandler { @Override public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { + final ModelNode model = new ModelNode(); + OVERLAY_FILE_PATH.validateAndSet(operation, model); + REDEPLOY_SERVER.validateAndSet(operation, model); String overlayName = AuthServerUtil.getOverlayName(operation); boolean isOverlayExists = AuthServerUtil.isOverlayExists(context, overlayName, PathAddress.EMPTY_ADDRESS); - String overlayPath = operation.get(OVERLAY_FILE_PATH.getName()).asString(); + String overlayPath = OVERLAY_FILE_PATH.resolveModelAttribute(context, model).asString(); if (isOverlayExists) { PathAddress overlayAddress = AuthServerUtil.getOverlayAddress(overlayName); AbstractAddOverlayHandler.removeContent(context, overlayAddress, overlayPath); @@ -70,7 +74,5 @@ public class RemoveOverlayHandler implements OperationStepHandler { String deploymentName = AuthServerUtil.getDeploymentName(operation); if (isRedeploy) AuthServerUtil.addStepToRedeployAuthServer(context, deploymentName); if (!isRedeploy) context.restartRequired(); - - context.stepCompleted(); } } diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java new file mode 100755 index 0000000000..bf6053b60a --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java @@ -0,0 +1,39 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.server.logging; + +import org.jboss.logging.BasicLogger; +import org.jboss.logging.Logger; +import org.jboss.logging.annotations.LogMessage; +import org.jboss.logging.annotations.Message; +import org.jboss.logging.annotations.MessageLogger; + +import static org.jboss.logging.Logger.Level.INFO; + +/** + * This interface to be fleshed out later when error messages are fully externalized. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +@MessageLogger(projectCode = "KEYCLOAK") +public interface KeycloakLogger extends BasicLogger { + + /** + * A logger with a category of the package name. + */ + KeycloakLogger ROOT_LOGGER = Logger.getMessageLogger(KeycloakLogger.class, "org.jboss.keycloak"); +} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakMessages.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakMessages.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java index 09f7bc2608..710c05420a 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakMessages.java +++ b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java @@ -14,7 +14,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.logging; +package org.keycloak.subsystem.server.logging; import org.jboss.logging.Messages; import org.jboss.logging.annotations.MessageBundle; diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/wildfly/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension new file mode 100644 index 0000000000..36b9edb9f0 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension @@ -0,0 +1 @@ +org.keycloak.subsystem.server.extension.KeycloakExtension diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties b/integration/wildfly/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties new file mode 100755 index 0000000000..f09e3bd189 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties @@ -0,0 +1,26 @@ +keycloak-server.subsystem=Keycloak subsystem +keycloak-server.subsystem.add=Operation Adds Keycloak subsystem +keycloak-server.subsystem.remove=Operation removes Keycloak subsystem +keycloak-server.subsystem.auth-server=Keycloak Auth Server +keycloak-server.subsystem.realm=A Keycloak realm. +keycloak-server.subsystem.secure-deployment=A deployment secured by Keycloak. + + +keycloak-server.auth-server=A Keycloak Auth Server +keycloak-server.auth-server.add=Add an Auth Server to the subsystem. +keycloak-server.auth-server.remove=Remove an Auth Server from the subsystem. +keycloak-server.auth-server.add-provider=Add a provider service jar to the Keycloak auth server. +keycloak-server.auth-server.add-provider.uploaded-file-name=The file name of the provider service jar to be added or updated. +keycloak-server.auth-server.add-provider.bytes-to-upload=The bytes of the provider service jar to be added or updated. +keycloak-server.auth-server.add-provider.redeploy=Redeploy the auth server after adding the provider. Ignored if auth server is disabled. +keycloak-server.auth-server.add-provider.overwrite=Overwrite even if the uploaded-file-name already exists as an overlay. +keycloak-server.auth-server.list-overlays=List the overlays uploaded for this auth server. +keycloak-server.auth-server.remove-overlay=Remove a provider jar, theme jar, or keycloak-server.json that has been uploaded to the auth server. +keycloak-server.auth-server.remove-overlay.overlay-file-path=The uploaded path and file name of the overlay to be removed. +keycloak-server.auth-server.remove-overlay.redeploy=Redeploy the auth server after removing the overlay. +keycloak-server.auth-server.update-server-config=Upload a new keycloak-server.json configuration file for the Keycloak auth server. +keycloak-server.auth-server.update-server-config.bytes-to-upload=The bytes of the keycloak-server.json file to be added or updated. +keycloak-server.auth-server.update-server-config.redeploy=Redeploy the auth server after updating the server config. +keycloak-server.auth-server.update-server-config.overwrite=Overwrite even if keycloak-server.json already exitss as an overlay. +keycloak-server.auth-server.enabled=Enable or disable the Auth Server. +keycloak-server.auth-server.web-context=Web context the auth-server will use. Also, the module name of the auth-server deployment. diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd b/integration/wildfly/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd new file mode 100755 index 0000000000..a8dd28e5a4 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the war archive containing the Keycloak server web application. + + + + + diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml b/integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml new file mode 100644 index 0000000000..9f05130294 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml @@ -0,0 +1,30 @@ + + + + org.jboss.as.connector + + + + jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE + h2 + + sa + sa + + + + jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE + h2 + + sa + sa + + + + + org.h2.jdbcx.JdbcDataSource + + + + + diff --git a/integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml b/integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml new file mode 100644 index 0000000000..7f66f74965 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml @@ -0,0 +1,11 @@ + + + + org.keycloak.keycloak-server-subsystem + + + true + auth + + + diff --git a/integration/wildfly/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/wildfly/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java new file mode 100755 index 0000000000..9f29a6f15b --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java @@ -0,0 +1,66 @@ +/* + * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors + * as indicated by the @author tags. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.keycloak.subsystem.server.extension; + +import java.io.IOException; + +import org.jboss.as.subsystem.test.AbstractSubsystemBaseTest; +import org.jboss.dmr.ModelNode; +import org.junit.Test; + +/** + * Tests all management expects for subsystem, parsing, marshaling, model definition and other + * Here is an example that allows you a fine grained controller over what is tested and how. So it can give you ideas what can be done and tested. + * If you have no need for advanced testing of subsystem you look at {@link AbstractSubsystemBaseTest} that testes same stuff but most of the code + * is hidden inside of test harness + * + * @author Kabir Khan + * @author Tomaz Cerar + * @author Marko Strukelj + */ +public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { + + public SubsystemParsingTestCase() { + super(KeycloakExtension.SUBSYSTEM_NAME, new KeycloakExtension()); + } + + @Test + public void testJson() throws Exception { + ModelNode node = new ModelNode(); + node.get("enabled").set(true); + node.get("web-context").set("auth"); + + System.out.println("json=" + node.toJSONString(false)); + } + + @Override + protected String getSubsystemXml() throws IOException { + return readResource("keycloak-server-1.1.xml"); + } + + @Override + protected String getSubsystemXsdPath() throws Exception { + return "schema/wildfly-keycloak-server_1_1.xsd"; + } + + @Override + protected String[] getSubsystemTemplatePaths() throws IOException { + return new String[]{ + "/subsystem-templates/keycloak-server.xml" + }; + } +} diff --git a/integration/wildfly/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml b/integration/wildfly/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml new file mode 100644 index 0000000000..f05f8d19c7 --- /dev/null +++ b/integration/wildfly/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml @@ -0,0 +1,6 @@ + + + true + auth + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 07246fbcb9..796918a8dd 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jboss jboss-parent - 14 + 16 Keycloak @@ -20,18 +20,26 @@ 2.0.0-M17 1.0.0-M23 + 0.6 2.3.8 1.50 1.9.9 4.3.6 4.3.3 3.0.10.Final + 3.0.10.Final + 2.7 + 4.2.1 + 1.1.1.Final 2.7.0.Final 2.11.3 3.1.4.GA 0.9.30 1.2.0.Beta1 + 1.0.4.Final + 4.0.26.Final + 0.1.1.Final 1.0.1.Final 4.0.1.Final 1.3.168 @@ -40,17 +48,22 @@ 1.6.1 1.4.01 5.1.25 - 1.5.10 + 1.7.7.jbossorg-1 + 9.0.0.CR1 + 1.0.0.CR1 + 1.0.0.Alpha8 7.1.1.Final - 8.2.0.Final - 1.0.0.Alpha12 1.0.2.Final 2.2 1.14.1-beta + 2011.1 1.0.1 2.3.20 3.0.5 2.35.0 + 2.21 + 2.2.11 + 20140925 1.4.5 6.0.2.Final 3.3.2 @@ -58,7 +71,7 @@ 4.2.0 3.1.2 2.10 - 4.11 + 4.12 1.3 1.2.17 1.3.1b @@ -140,6 +153,61 @@ + + com.github.relaxng + relaxngDatatype + ${github.relaxng.version} + + + com.sun.istack + istack-commons-runtime + ${sun.istack.version} + + + com.sun.istack + istack-commons-tools + ${sun.istack.version} + + + com.sun.xml.bind.external + rngom + ${sun.jaxb.version} + + + com.sun.xsom + xsom + ${sun.xsom.version} + + + org.glassfish.jaxb + jaxb-core + ${sun.jaxb.version} + + + org.glassfish.jaxb + jaxb-runtime + ${sun.jaxb.version} + + + org.glassfish.jaxb + jaxb-xjc + ${sun.jaxb.version} + + + org.glassfish.jaxb + codemodel + ${sun.jaxb.version} + + + org.glassfish.jaxb + txw2 + ${sun.jaxb.version} + + + joda-time + joda-time + ${joda-time.version} + org.bouncycastle bcprov-jdk15on @@ -147,7 +215,7 @@ org.bouncycastle - bcpkix-jdk15on + bcpkix-jdk15on ${bouncycastle.crypto.version} @@ -197,6 +265,31 @@ ${resteasy.version} test + + org.jboss.spec.javax.xml.bind + jboss-jaxb-api_2.2_spec + ${jboss.spec.javax.xml.bind.jboss-jaxb-api_2.2_spec.version} + + + io.netty + netty-all + ${io.netty.version} + + + org.jboss.xnio.netty + netty-xnio-transport + ${xnio.netty.netty-xnio-transport.version} + + + org.keycloak + keycloak-wildfly-adapter-subsystem + ${project.version} + + + org.keycloak + keycloak-undertow-adapter + ${project.version} + io.undertow undertow-servlet @@ -418,7 +511,12 @@ ${slf4j.version} test - + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + mysql mysql-connector-java @@ -440,6 +538,28 @@ httpcore ${apache.httpcomponents.httpcore.version} + + org.apache.httpcomponents + httpmime + ${keycloak.apache.httpcomponents.version} + + + commons-logging + commons-logging + + + + + org.apache.james + apache-mime4j + ${org.apache.james.apache-mime4j.version} + + + commons-logging + commons-logging + + + org.wildfly.core wildfly-controller @@ -455,6 +575,18 @@ wildfly-ee ${wildfly.version} + + org.wildfly + wildfly-feature-pack + ${wildfly.version} + zip + + + org.wildfly + wildfly-web-feature-pack + ${wildfly.version} + zip + org.wildfly.core wildfly-subsystem-test @@ -462,6 +594,18 @@ pom test + + org.wildfly + wildfly-undertow + ${wildfly.version} + test + + + org.wildfly.core + wildfly-subsystem-test-framework + ${wildfly.core.version} + test + org.wildfly.core wildfly-core-feature-pack @@ -481,7 +625,7 @@ org.wildfly - wildfly-undertow + wildfly-web-common ${wildfly.version} @@ -1098,6 +1242,54 @@ liquibase-maven-plugin ${liquibase.version} + + + org.wildfly.build + wildfly-feature-pack-build-maven-plugin + ${wildfly.build-tools.version} + + + org.wildfly.build + wildfly-server-provisioning-maven-plugin + ${wildfly.build-tools.version} + diff --git a/testsuite/docker-cluster/shared-files/keycloak-base-prepare.sh b/testsuite/docker-cluster/shared-files/keycloak-base-prepare.sh index 965da9b7f3..c303009a6d 100644 --- a/testsuite/docker-cluster/shared-files/keycloak-base-prepare.sh +++ b/testsuite/docker-cluster/shared-files/keycloak-base-prepare.sh @@ -12,8 +12,8 @@ mkdir -p mysql/main && mv /mysql-connector-java-5.1.32.jar mysql/main/ cp /keycloak-docker-cluster/shared-files/mysql-module.xml mysql/main/module.xml mv mysql $JBOSS_MODULES_HOME/com/ -sed -i -e "s//&\n /" $JBOSS_HOME/standalone/configuration/standalone-ha.xml -sed -i -e 's//&\n \n \n true<\/enabled>\n auth<\/web-context>\n <\/auth-server> \n <\/subsystem>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml && \ +sed -i -e "s//&\n /" $JBOSS_HOME/standalone/configuration/standalone-ha.xml +sed -i -e 's//&\n \n \n true<\/enabled>\n auth<\/web-context>\n <\/auth-server> \n <\/subsystem>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml && \ sed -i -e 's//&\n \n \n \n <\/authentication>\n <\/security-domain>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml && \ sed -i -e 's//&\n \n com.mysql.jdbc.Driver<\/xa-datasource-class>\n com.mysql.jdbc.Driver<\/driver-class>\n <\/driver>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml && \ sed -i -e 's/<\/periodic-rotating-file-handler>/&\n \n \n <\/logger>\n \n \n <\/logger>/' $JBOSS_HOME/standalone/configuration/standalone-ha.xml diff --git a/testsuite/wildfly/pom.xml b/testsuite/wildfly/pom.xml new file mode 100644 index 0000000000..4fbbe04a05 --- /dev/null +++ b/testsuite/wildfly/pom.xml @@ -0,0 +1,504 @@ + + + + keycloak-testsuite-pom + org.keycloak + 1.3.0.Beta1-SNAPSHOT + ../../pom.xml + + 4.0.0 + + keycloak-testsuite-wildfly + Keycloak WildFly 9.x Integration TestSuite + + + + + org.keycloak + keycloak-dependencies-server-all + pom + + + org.keycloak + keycloak-admin-client + + + log4j + log4j + + + org.slf4j + slf4j-api + 1.6.1 + + + org.slf4j + slf4j-log4j12 + 1.6.1 + + + org.jboss.spec.javax.servlet + jboss-servlet-api_3.0_spec + + + org.jboss.resteasy + jaxrs-api + + + org.jboss.resteasy + resteasy-jaxrs + + + log4j + log4j + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-simple + + + + + org.jboss.resteasy + resteasy-client + + + org.jboss.resteasy + resteasy-multipart-provider + + + org.jboss.resteasy + resteasy-jackson-provider + + + org.jboss.resteasy + resteasy-undertow + + + com.google.zxing + javase + + + org.bouncycastle + bcprov-jdk15on + + + org.apache.httpcomponents + httpclient + + + org.keycloak + keycloak-ldap-federation + + + org.keycloak + keycloak-kerberos-federation + + + org.keycloak + keycloak-undertow-adapter + + + org.keycloak + keycloak-wildfly-adapter + + + org.jboss.logging + jboss-logging + + + io.undertow + undertow-servlet + + + io.undertow + undertow-core + + + org.codehaus.jackson + jackson-core-asl + + + org.codehaus.jackson + jackson-mapper-asl + + + org.codehaus.jackson + jackson-xc + + + junit + junit + + + org.hamcrest + hamcrest-all + + + org.hibernate.javax.persistence + hibernate-jpa-2.0-api + + + com.h2database + h2 + + + org.hibernate + hibernate-entitymanager + + + com.icegreen + greenmail + + + org.slf4j + slf4j-api + + + + + org.infinispan + infinispan-core + + + org.seleniumhq.selenium + selenium-java + + + xml-apis + xml-apis + + + org.seleniumhq.selenium + selenium-chrome-driver + + + org.wildfly + wildfly-undertow + ${wildfly.version} + test + + + org.keycloak + keycloak-testsuite-integration + test + + + org.keycloak + keycloak-testsuite-integration + test-jar + test + + + org.eclipse.jetty + jetty-jaas + ${jetty9.version} + provided + + + + org.eclipse.jetty + jetty-util + ${jetty9.version} + provided + + + + org.eclipse.jetty + jetty-webapp + ${jetty9.version} + provided + + + + org.eclipse.jetty + jetty-security + ${jetty9.version} + provided + + + + org.eclipse.jetty + jetty-servlet + ${jetty9.version} + provided + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.2 + + + + test-jar + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + + + + org.codehaus.mojo + exec-maven-plugin + + ${project.basedir} + + + + + + + + keycloak-server + + + + org.codehaus.mojo + exec-maven-plugin + + org.keycloak.testsuite.KeycloakServer + + + + + + + mail-server + + + + org.codehaus.mojo + exec-maven-plugin + + org.keycloak.testsuite.MailServer + + + + + + + totp + + + + org.codehaus.mojo + exec-maven-plugin + + org.keycloak.testsuite.TotpGenerator + + + + + + + + jpa + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + jpa + jpa + jpa + jpa + + + + + + + + + mongo + + + localhost + 27018 + keycloak + true + 127.0.0.1 + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + test + integration-test + + test + + + + mongo + mongo + mongo + mongo + ${keycloak.connectionsMongo.host} + ${keycloak.connectionsMongo.port} + ${keycloak.connectionsMongo.db} + ${keycloak.connectionsMongo.clearOnStartup} + ${keycloak.connectionsMongo.bindIp} + + + + + default-test + + true + + + + + + + + com.github.joelittlejohn.embedmongo + embedmongo-maven-plugin + + + start-mongodb + pre-integration-test + + start + + + ${keycloak.connectionsMongo.port} + file + ${project.build.directory}/mongodb.log + ${keycloak.connectionsMongo.bindIp} + + + + stop-mongodb + post-integration-test + + stop + + + + + + + + + + + infinispan + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + infinispan + infinispan + infinispan + + + + + + + + + + + + keycloak.connectionsJpa.driver + com.mysql.jdbc.Driver + + + mysql + + + mysql + mysql-connector-java + ${mysql.version} + + + + + + + + + keycloak.connectionsJpa.driver + org.postgresql.Driver + + + postgresql + + + org.postgresql + postgresql + ${postgresql.version} + + + + + + clean-jpa + + + + org.liquibase + liquibase-maven-plugin + + META-INF/jpa-changelog-master.xml + + ${keycloak.connectionsJpa.url} + ${keycloak.connectionsJpa.driver} + ${keycloak.connectionsJpa.user} + ${keycloak.connectionsJpa.password} + + false + + + + clean-jpa + clean + + dropAll + + + + + + + + + diff --git a/testsuite/wildfly/src/test/config/arq/arquillian.xml b/testsuite/wildfly/src/test/config/arq/arquillian.xml new file mode 100644 index 0000000000..7fcf61cb4d --- /dev/null +++ b/testsuite/wildfly/src/test/config/arq/arquillian.xml @@ -0,0 +1,25 @@ + + + + + + + + ${basedir}/target/jbossas + ${server.jvm.args} -Djboss.inst=${basedir}/target/jbossas -Dtest.bind.address=${node0} + ${jboss.server.config.file.name:standalone.xml} + ${jboss.args} + + true + ${node0:127.0.0.1} + ${as.managementPort:9990} + + + ${as.debug.port:8787} ${as.managementPort:9990} + 8 + + + +