From 9a17658f8446aec16014031122b1236b7b746678 Mon Sep 17 00:00:00 2001 From: Tomaz Cerar Date: Tue, 21 Apr 2015 15:59:42 +0200 Subject: [PATCH 01/22] remove eap6 dup --- ...kAdapterConfigDeploymentProcessorEAP6.java | 132 ------------------ .../KeycloakDependencyProcessorEAP6.java | 39 ------ .../extension/KeycloakSubsystemAdd.java | 12 +- 3 files changed, 2 insertions(+), 181 deletions(-) delete mode 100755 integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessorEAP6.java delete mode 100755 integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java 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/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java deleted file mode 100755 index 7c084d11d1..0000000000 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessorEAP6.java +++ /dev/null @@ -1,39 +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 org.jboss.as.server.deployment.module.ModuleDependency; -import org.jboss.as.server.deployment.module.ModuleSpecification; -import org.jboss.modules.ModuleIdentifier; -import org.jboss.modules.ModuleLoader; - -/** - * Adds platform-specific modules for EAP6 - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class KeycloakDependencyProcessorEAP6 extends KeycloakDependencyProcessor { - - private static final ModuleIdentifier KEYCLOAK_AS7_ADAPTER = ModuleIdentifier.create("org.keycloak.keycloak-as7-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)); - } -} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java index 386f8c57bc..d33af61cd1 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java @@ -67,19 +67,11 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { } 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(); - } + return new KeycloakAdapterConfigDeploymentProcessor(); } @Override From 355c440c3d9510839022442b33d5f0a444f0d57e Mon Sep 17 00:00:00 2001 From: Tomaz Cerar Date: Tue, 21 Apr 2015 16:50:59 +0200 Subject: [PATCH 02/22] Update subsystem code to reflect latest standards --- .../extension/CredentialAddHandler.java | 6 +- .../extension/CredentialDefinition.java | 1 - .../extension/KeycloakExtension.java | 10 +- .../extension/KeycloakSubsystemAdd.java | 19 +-- .../KeycloakSubsystemDefinition.java | 4 +- .../subsystem/extension/RealmAddHandler.java | 14 +- .../subsystem/extension/RealmDefinition.java | 2 +- .../extension/RealmRemoveHandler.java | 2 +- .../extension/RealmWriteAttributeHandler.java | 2 +- .../extension/SecureDeploymentAddHandler.java | 26 +--- .../extension/SecureDeploymentDefinition.java | 2 +- .../SecureDeploymentRemoveHandler.java | 2 +- ...SecureDeploymentWriteAttributeHandler.java | 2 +- .../extension/SharedAttributeDefinitons.java | 5 +- .../authserver/AbstractAddOverlayHandler.java | 73 ++++------ .../authserver/AddProviderHandler.java | 15 +- .../authserver/AuthServerDefinition.java | 2 - .../AuthServerWriteAttributeHandler.java | 10 +- .../authserver/ListOverlaysHandler.java | 2 - .../authserver/RemoveOverlayHandler.java | 12 +- .../resources/schema/wildfly-keycloak_1_0.xsd | 2 +- .../extension/SubsystemParsingTestCase.java | 131 +++--------------- .../subsystem/extension/keycloak-1.0.xml | 24 ++++ 23 files changed, 102 insertions(+), 266 deletions(-) create mode 100644 integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java index 17f7928198..1fe9958b15 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java @@ -21,11 +21,7 @@ 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/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java index 212f8fa51c..5524636559 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java @@ -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/KeycloakExtension.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java index 1816ad27ba..26a9bdc4e3 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java @@ -16,6 +16,7 @@ */ package org.keycloak.subsystem.extension; +import org.jboss.as.controller.ModelVersion; import org.keycloak.subsystem.extension.authserver.AuthServerDefinition; import org.jboss.as.controller.Extension; import org.jboss.as.controller.ExtensionContext; @@ -42,10 +43,8 @@ public class KeycloakExtension implements Extension { 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,0,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(); @@ -74,8 +73,7 @@ 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); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java index d33af61cd1..e203e8120e 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java @@ -19,16 +19,11 @@ package org.keycloak.subsystem.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; @@ -42,14 +37,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) { @@ -73,9 +61,4 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { private DeploymentUnitProcessor chooseConfigDeploymentProcessor() { return new KeycloakAdapterConfigDeploymentProcessor(); } - - @Override - protected boolean requiresRuntimeVerification() { - return false; - } } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java index fe9b57b37a..8eedbcc62e 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java @@ -17,10 +17,8 @@ package org.keycloak.subsystem.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/RealmAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java index 62c76e69b6..94d3ed65d4 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java @@ -21,14 +21,7 @@ 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; /** * Add a new realm. @@ -43,11 +36,6 @@ public final class RealmAddHandler extends AbstractAddStepHandler { @Override protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { - // TODO: localize exception. get id number - if (!operation.get(OP).asString().equals(ADD)) { - throw new OperationFailedException("Unexpected operation for add realm. operation=" + operation.toString()); - } - for (AttributeDefinition attrib : RealmDefinition.ALL_ATTRIBUTES) { attrib.validateAndSet(operation, model); } @@ -59,7 +47,7 @@ public final class RealmAddHandler 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.addRealm(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java index e590b427d1..334417d8b8 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java @@ -33,7 +33,7 @@ import java.util.Map; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public class RealmDefinition extends SimpleResourceDefinition { +class RealmDefinition extends SimpleResourceDefinition { public static final String TAG_NAME = "realm"; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java index 5cc319c0b2..6bda383ef0 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java @@ -27,7 +27,7 @@ import org.jboss.dmr.ModelNode; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public final class RealmRemoveHandler extends AbstractRemoveStepHandler { +final class RealmRemoveHandler extends AbstractRemoveStepHandler { public static RealmRemoveHandler INSTANCE = new RealmRemoveHandler(); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java index 13e91c5ce4..36833b6a8e 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java @@ -30,7 +30,7 @@ import java.util.List; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { +class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { public RealmWriteAttributeHandler(List definitions) { this(definitions.toArray(new AttributeDefinition[definitions.size()])); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java index 0c36146ec6..9198bf54f4 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java @@ -18,43 +18,25 @@ package org.keycloak.subsystem.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; /** * Add a deployment to a realm. * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { +final class SecureDeploymentAddHandler extends AbstractAddStepHandler { public static SecureDeploymentAddHandler INSTANCE = new SecureDeploymentAddHandler(); - private SecureDeploymentAddHandler() {} - - @Override - protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { - // TODO: localize exception. get id number - if (!operation.get(OP).asString().equals(ADD)) { - throw new OperationFailedException("Unexpected operation for add secure deployment. operation=" + operation.toString()); - } - - for (AttributeDefinition attr : SecureDeploymentDefinition.ALL_ATTRIBUTES) { - attr.validateAndSet(operation, model); - } + private SecureDeploymentAddHandler() { + super(SecureDeploymentDefinition.ALL_ATTRIBUTES); } @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/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java index 9cd606c34c..1ac65f0ea8 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java @@ -37,7 +37,7 @@ import java.util.Map; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public class SecureDeploymentDefinition extends SimpleResourceDefinition { +class SecureDeploymentDefinition extends SimpleResourceDefinition { public static final String TAG_NAME = "secure-deployment"; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java index 23196a5fff..f1f0c15ce0 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java @@ -27,7 +27,7 @@ import org.jboss.dmr.ModelNode; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandler { +final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandler { public static SecureDeploymentRemoveHandler INSTANCE = new SecureDeploymentRemoveHandler(); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java index 6c87ac8601..8ababe928e 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java @@ -31,7 +31,7 @@ import java.util.List; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttributeHandler { +class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttributeHandler { public SecureDeploymentWriteAttributeHandler(List definitions) { this(definitions.toArray(new AttributeDefinition[definitions.size()])); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java index 1b3c48f0d0..164136ed52 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java @@ -31,7 +31,7 @@ import java.util.List; * * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. */ -public class SharedAttributeDefinitons { +class SharedAttributeDefinitons { protected static final SimpleAttributeDefinition REALM_PUBLIC_KEY = new SimpleAttributeDefinitionBuilder("realm-public-key", ModelType.STRING, true) @@ -120,7 +120,6 @@ public class SharedAttributeDefinitons { .build(); protected static final SimpleAttributeDefinition CORS_ALLOWED_METHODS = new SimpleAttributeDefinitionBuilder("cors-allowed-methods", ModelType.STRING, true) - .setXmlName("cors-allowed-methods") .setAllowExpression(true) .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) .build(); @@ -210,7 +209,7 @@ public class SharedAttributeDefinitons { if (isSet(attributes, SSL_REQUIRED) && attributes.get(SSL_REQUIRED.getName()).asString().equals("none")) { return true; } - + //TODO, look into alternatives & requires properties on AttributeDefinition return isSet(attributes, TRUSTSTORE) && isSet(attributes, TRUSTSTORE_PASSWORD); } diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java index c701cf2232..9d038237e4 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java @@ -16,59 +16,62 @@ */ package org.keycloak.subsystem.extension.authserver; +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.REMOVE; +import static org.keycloak.subsystem.extension.authserver.AuthServerUtil.getHandler; + 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,10 +98,10 @@ 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); } @@ -108,8 +111,8 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler context.addStep(operation, 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 +144,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 +159,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"); } @@ -183,21 +180,9 @@ public abstract class AbstractAddOverlayHandler implements OperationStepHandler context.addStep(operation, 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 +200,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/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java index e2c99ed6f7..0300700bec 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java @@ -18,11 +18,7 @@ package org.keycloak.subsystem.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/AuthServerDefinition.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java index 648e35d118..43763f0776 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java @@ -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/AuthServerWriteAttributeHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java index 6c5d6b3235..6a81fae3bf 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java @@ -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/ListOverlaysHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java index 39c5225663..162c45d9c1 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java @@ -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/RemoveOverlayHandler.java b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java index e2580ba7ff..c22e122605 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java +++ b/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java @@ -17,6 +17,8 @@ package org.keycloak.subsystem.extension.authserver; +import static org.keycloak.subsystem.extension.authserver.AbstractAddOverlayHandler.REDEPLOY_SERVER; + import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationDefinition; import org.jboss.as.controller.OperationFailedException; @@ -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/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd b/integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd index 17d6aa6f23..e9297eb246 100755 --- a/integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd +++ b/integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd @@ -67,7 +67,7 @@ - + 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 index 911fed4530..f57a73b87f 100755 --- 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 @@ -17,28 +17,24 @@ 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 java.io.IOException; + +import org.jboss.as.subsystem.test.AbstractSubsystemBaseTest; 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 + * 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 AbstractSubsystemTest { +public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { public SubsystemParsingTestCase() { super(KeycloakExtension.SUBSYSTEM_NAME, new KeycloakExtension()); @@ -60,112 +56,21 @@ public class SubsystemParsingTestCase extends AbstractSubsystemTest { 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()); + @Override + protected String getSubsystemXml() throws IOException { + return readResource("keycloak-1.0.xml"); } - /** - * 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)); + @Override + protected String getSubsystemXsdPath() throws Exception { + return "schema/wildfly-keycloak_1_0.xsd"; } - /** - * 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 + @Override + protected String[] getSubsystemTemplatePaths() throws IOException { + return new String[]{ + "/subsystem-templates/keycloak.xml" + }; } } diff --git a/integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml b/integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml new file mode 100644 index 0000000000..014f825d00 --- /dev/null +++ b/integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.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 From c571ad9902695442160385b822edb453d3ce4b5c Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Fri, 17 Apr 2015 15:33:15 +0200 Subject: [PATCH 03/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Renamed keycloak-subsystem into keycloak-server-subsystem - Added keycloak-adapter-subsystem without auth-server support - Removed adapter config from keycloak-server subsystem - Added proper .xsd for server subsystem --- distribution/modules/build.xml | 7 +- distribution/modules/pom.xml | 10 +- .../main/module.xml | 51 ++++ .../main/module.xml | 2 +- .../keycloak/keycloak-server/main/module.xml | 3 +- .../src/main/xslt/standalone.xsl | 5 +- .../pom.xml | 4 +- .../extension/CredentialAddHandler.java | 47 ++++ .../extension/CredentialDefinition.java | 61 +++++ .../CredentialReadWriteAttributeHandler.java | 50 ++++ .../extension/CredentialRemoveHandler.java | 42 ++++ .../adapter/extension/Environment.java | 58 +++++ ...cloakAdapterConfigDeploymentProcessor.java | 131 ++++++++++ .../KeycloakAdapterConfigService.java | 204 ++++++++++++++++ .../KeycloakDependencyProcessor.java | 67 +++++ .../KeycloakDependencyProcessorWildFly.java | 41 ++++ .../adapter}/extension/KeycloakExtension.java | 16 +- .../extension/KeycloakSubsystemAdd.java | 59 +++++ .../KeycloakSubsystemDefinition.java | 47 ++++ .../extension/KeycloakSubsystemParser.java | 40 +-- .../adapter/extension/RealmAddHandler.java | 66 +++++ .../adapter/extension/RealmDefinition.java | 87 +++++++ .../adapter/extension/RealmRemoveHandler.java | 41 ++++ .../extension/RealmWriteAttributeHandler.java | 60 +++++ .../extension/SecureDeploymentAddHandler.java | 61 +++++ .../extension/SecureDeploymentDefinition.java | 130 ++++++++++ .../SecureDeploymentRemoveHandler.java | 41 ++++ ...SecureDeploymentWriteAttributeHandler.java | 59 +++++ .../extension/SharedAttributeDefinitons.java | 228 ++++++++++++++++++ .../adapter/logging/KeycloakLogger.java | 45 ++++ .../adapter/logging/KeycloakMessages.java | 34 +++ .../org.jboss.as.controller.Extension | 1 + .../extension/LocalDescriptions.properties | 27 +-- .../resources/schema/wildfly-keycloak_1_1.xsd | 105 ++++++++ .../subsystem-templates/keycloak.xml | 4 +- .../extension/RealmDefinitionTestCase.java | 89 +++++++ .../extension/SubsystemParsingTestCase.java | 172 +++++++++++++ integration/keycloak-server-subsystem/pom.xml | 125 ++++++++++ .../extension/CredentialAddHandler.java | 2 +- .../extension/CredentialDefinition.java | 2 +- .../CredentialReadWriteAttributeHandler.java | 2 +- .../extension/CredentialRemoveHandler.java | 2 +- .../server}/extension/Environment.java | 4 +- ...cloakAdapterConfigDeploymentProcessor.java | 4 +- .../KeycloakAdapterConfigService.java | 2 +- .../KeycloakDependencyProcessor.java | 2 +- .../KeycloakDependencyProcessorWildFly.java | 2 +- .../server/extension/KeycloakExtension.java | 80 ++++++ .../extension/KeycloakSubsystemAdd.java | 4 +- .../KeycloakSubsystemDefinition.java | 2 +- .../extension/KeycloakSubsystemParser.java | 141 +++++++++++ .../server}/extension/RealmAddHandler.java | 2 +- .../server}/extension/RealmDefinition.java | 2 +- .../server}/extension/RealmRemoveHandler.java | 2 +- .../extension/RealmWriteAttributeHandler.java | 2 +- .../extension/SecureDeploymentAddHandler.java | 2 +- .../extension/SecureDeploymentDefinition.java | 2 +- .../SecureDeploymentRemoveHandler.java | 2 +- ...SecureDeploymentWriteAttributeHandler.java | 2 +- .../extension/SharedAttributeDefinitons.java | 2 +- .../authserver/AbstractAddOverlayHandler.java | 7 +- .../authserver/AddProviderHandler.java | 2 +- .../authserver/AuthServerAddHandler.java | 9 +- .../authserver/AuthServerDefinition.java | 6 +- .../authserver/AuthServerRemoveHandler.java | 4 +- .../extension/authserver/AuthServerUtil.java | 10 +- .../AuthServerWriteAttributeHandler.java | 4 +- .../KeycloakServerDeploymentProcessor.java | 4 +- .../authserver/ListOverlaysHandler.java | 2 +- .../OverlayKeycloakServerJsonHandler.java | 2 +- .../authserver/RemoveOverlayHandler.java | 4 +- .../server}/logging/KeycloakLogger.java | 2 +- .../server}/logging/KeycloakMessages.java | 2 +- .../org.jboss.as.controller.Extension | 1 + .../extension/LocalDescriptions.properties | 26 ++ .../schema/wildfly-keycloak-server_1_1.xsd} | 4 +- .../subsystem-templates/keycloak.xml | 34 +++ .../extension/RealmDefinitionTestCase.java | 4 +- .../extension/SubsystemParsingTestCase.java | 3 +- .../org.jboss.as.controller.Extension | 1 - integration/pom.xml | 3 +- pom.xml | 2 +- .../shared-files/keycloak-base-prepare.sh | 4 +- 83 files changed, 2578 insertions(+), 149 deletions(-) create mode 100755 distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-subsystem/main/module.xml rename distribution/modules/src/main/resources/modules/org/keycloak/{keycloak-subsystem => keycloak-server-subsystem}/main/module.xml (99%) rename integration/{keycloak-subsystem => keycloak-adapter-subsystem}/pom.xml (97%) create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter}/extension/KeycloakExtension.java (90%) create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter}/extension/KeycloakSubsystemParser.java (82%) create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java create mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java create mode 100644 integration/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension rename integration/{keycloak-subsystem/src/main/resources/org/keycloak/subsystem => keycloak-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter}/extension/LocalDescriptions.properties (67%) create mode 100755 integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd rename integration/{keycloak-subsystem => keycloak-adapter-subsystem}/src/main/resources/subsystem-templates/keycloak.xml (93%) create mode 100755 integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java create mode 100755 integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java create mode 100755 integration/keycloak-server-subsystem/pom.xml rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/CredentialAddHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/CredentialDefinition.java (98%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/CredentialReadWriteAttributeHandler.java (97%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/CredentialRemoveHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/Environment.java (93%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/KeycloakAdapterConfigDeploymentProcessor.java (98%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/KeycloakAdapterConfigService.java (99%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/KeycloakDependencyProcessor.java (98%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/KeycloakDependencyProcessorWildFly.java (97%) create mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/KeycloakSubsystemAdd.java (94%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/KeycloakSubsystemDefinition.java (97%) create mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/RealmAddHandler.java (97%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/RealmDefinition.java (98%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/RealmRemoveHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/RealmWriteAttributeHandler.java (97%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/SecureDeploymentAddHandler.java (97%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/SecureDeploymentDefinition.java (99%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/SecureDeploymentRemoveHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/SecureDeploymentWriteAttributeHandler.java (98%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/SharedAttributeDefinitons.java (99%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AbstractAddOverlayHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AddProviderHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AuthServerAddHandler.java (93%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AuthServerDefinition.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AuthServerRemoveHandler.java (95%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AuthServerUtil.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/AuthServerWriteAttributeHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/KeycloakServerDeploymentProcessor.java (94%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/ListOverlaysHandler.java (98%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/OverlayKeycloakServerJsonHandler.java (96%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/extension/authserver/RemoveOverlayHandler.java (95%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/logging/KeycloakLogger.java (97%) rename integration/{keycloak-subsystem/src/main/java/org/keycloak/subsystem => keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server}/logging/KeycloakMessages.java (96%) create mode 100644 integration/keycloak-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension create mode 100755 integration/keycloak-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties rename integration/{keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd => keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd} (98%) create mode 100644 integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml rename integration/{keycloak-subsystem/src/test/java/org/keycloak/subsystem => keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server}/extension/RealmDefinitionTestCase.java (96%) rename integration/{keycloak-subsystem/src/test/java/org/keycloak/subsystem => keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server}/extension/SubsystemParsingTestCase.java (96%) delete mode 100644 integration/keycloak-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension diff --git a/distribution/modules/build.xml b/distribution/modules/build.xml index 0fdcfa481c..a48655e5e6 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 56b65b3977..713b9129ce 100755 --- a/distribution/modules/pom.xml +++ b/distribution/modules/pom.xml @@ -56,7 +56,13 @@ org.keycloak - keycloak-subsystem + keycloak-server-subsystem + ${project.version} + + + org.keycloak + keycloak-adapter-subsystem + ${project.version} org.keycloak.subsystem @@ -181,7 +187,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/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/integration/keycloak-subsystem/pom.xml b/integration/keycloak-adapter-subsystem/pom.xml similarity index 97% rename from integration/keycloak-subsystem/pom.xml rename to integration/keycloak-adapter-subsystem/pom.xml index 80bb82c9d0..5a0c150f00 100755 --- a/integration/keycloak-subsystem/pom.xml +++ b/integration/keycloak-adapter-subsystem/pom.xml @@ -24,8 +24,8 @@ ../../pom.xml - keycloak-subsystem - Keycloak Subsystem + keycloak-adapter-subsystem + Keycloak Adapter Subsystem jar diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java new file mode 100755 index 0000000000..2b9fcb73b0 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java @@ -0,0 +1,47 @@ +/* + * 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.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. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class CredentialAddHandler extends AbstractAddStepHandler { + + public CredentialAddHandler(AttributeDefinition... attributes) { + super(attributes); + } + + @Override + 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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java new file mode 100755 index 0000000000..77dfd9db22 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java @@ -0,0 +1,61 @@ +/* + * 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.controller.AttributeDefinition; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.operations.validation.StringLengthValidator; +import org.jboss.as.controller.registry.ManagementResourceRegistration; +import org.jboss.dmr.ModelType; + +/** + * Defines attributes and operations for a credential. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class CredentialDefinition extends SimpleResourceDefinition { + + public static final String TAG_NAME = "credential"; + + protected static final AttributeDefinition VALUE = + new SimpleAttributeDefinitionBuilder("value", ModelType.STRING, false) + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) + .build(); + + public CredentialDefinition() { + super(PathElement.pathElement(TAG_NAME), + KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), + new CredentialAddHandler(VALUE), + CredentialRemoveHandler.INSTANCE); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + + @Override + public void registerAttributes(ManagementResourceRegistration resourceRegistration) { + super.registerAttributes(resourceRegistration); + resourceRegistration.registerReadWriteAttribute(VALUE, null, new CredentialReadWriteAttributeHandler()); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java new file mode 100644 index 0000000000..7aff17f171 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java @@ -0,0 +1,50 @@ +/* + * 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.adapter.extension; + +import org.jboss.as.controller.AbstractWriteAttributeHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Update a credential value. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class CredentialReadWriteAttributeHandler extends AbstractWriteAttributeHandler { + + @Override + protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode resolvedValue, ModelNode currentValue, AbstractWriteAttributeHandler.HandbackHolder hh) throws OperationFailedException { + + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.updateCredential(operation, attributeName, resolvedValue); + + hh.setHandback(ckService); + + return false; + } + + @Override + protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { + ckService.updateCredential(operation, attributeName, valueToRestore); + } + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java new file mode 100644 index 0000000000..36923f08df --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java @@ -0,0 +1,42 @@ +/* + * 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.adapter.extension; + +import org.jboss.as.controller.AbstractRemoveStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Remove a credential from a deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public final class CredentialRemoveHandler extends AbstractRemoveStepHandler { + + public static CredentialRemoveHandler INSTANCE = new CredentialRemoveHandler(); + + private CredentialRemoveHandler() {} + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.removeCredential(operation); + } + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java new file mode 100644 index 0000000000..06883c8448 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java @@ -0,0 +1,58 @@ +/* + * 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.adapter.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-adapter-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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java new file mode 100755 index 0000000000..f6246273e2 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java @@ -0,0 +1,131 @@ +/* + * 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.adapter.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.common.WarMetaData; +import org.jboss.logging.Logger; +import org.jboss.metadata.javaee.spec.ParamValueMetaData; +import org.jboss.metadata.web.jboss.JBossWebMetaData; +import org.jboss.metadata.web.spec.LoginConfigMetaData; +import org.keycloak.subsystem.adapter.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. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitProcessor { + protected Logger log = Logger.getLogger(KeycloakAdapterConfigDeploymentProcessor.class); + + // This param name is defined again in Keycloak Undertow Integration class + // org.keycloak.adapters.undertow.KeycloakServletExtension. We have this value in + // two places to avoid dependency between Keycloak Subsystem and Keyclaok Undertow Integration. + public static final String AUTH_DATA_PARAM_NAME = "org.keycloak.json.adapterConfig"; + + // not sure if we need this yet, keeping here just in case + protected void addSecurityDomain(DeploymentUnit deploymentUnit, KeycloakAdapterConfigService service) { + String deploymentName = deploymentUnit.getName(); + if (!service.isSecureDeployment(deploymentName)) { + return; + } + 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 || !loginConfig.getAuthMethod().equalsIgnoreCase("KEYCLOAK")) { + return; + } + + webMetaData.setSecurityDomain("keycloak"); + } + + @Override + public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { + DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); + + String deploymentName = deploymentUnit.getName(); + KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); + if (service.isSecureDeployment(deploymentName)) { + addKeycloakAuthData(phaseContext, deploymentName, service); + } + + // FYI, Undertow Extension will find deployments that have auth-method set to KEYCLOAK + + // todo notsure if we need this + // addSecurityDomain(deploymentUnit, service); + } + + private void addKeycloakAuthData(DeploymentPhaseContext phaseContext, String deploymentName, KeycloakAdapterConfigService service) throws DeploymentUnitProcessingException { + DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); + WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); + if (warMetaData == null) { + throw new DeploymentUnitProcessingException("WarMetaData not found for " + deploymentName + ". Make sure you have specified a WAR as your secure-deployment in the Keycloak subsystem."); + } + + addJSONData(service.getJSON(deploymentName), warMetaData); + JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); + if (webMetaData == null) { + webMetaData = new JBossWebMetaData(); + warMetaData.setMergedJBossWebMetaData(webMetaData); + } + + LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); + if (loginConfig == null) { + loginConfig = new LoginConfigMetaData(); + webMetaData.setLoginConfig(loginConfig); + } + loginConfig.setAuthMethod("KEYCLOAK"); + loginConfig.setRealmName(service.getRealmName(deploymentName)); + KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentName); + } + + 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(AUTH_DATA_PARAM_NAME); + param.setParamValue(json); + contextParams.add(param); + + webMetaData.setContextParams(contextParams); + } + + @Override + public void undeploy(DeploymentUnit du) { + + } + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java new file mode 100755 index 0000000000..cb2dddf744 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java @@ -0,0 +1,204 @@ +/* + * 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.dmr.ModelNode; +import org.jboss.dmr.Property; +import org.jboss.logging.Logger; + +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 { + protected Logger log = Logger.getLogger(KeycloakAdapterConfigService.class); + private static final String CREDENTIALS_JSON_NAME = "credentials"; + + private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); + + public static KeycloakAdapterConfigService getInstance() { + return INSTANCE; + } + + private final Map realms = new HashMap(); + + // 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()); + } + + public void updateRealm(ModelNode operation, String attrName, ModelNode resolvedValue) { + ModelNode realm = this.realms.get(realmNameFromOp(operation)); + realm.get(attrName).set(resolvedValue); + } + + public void removeRealm(ModelNode operation) { + this.realms.remove(realmNameFromOp(operation)); + } + + public void addSecureDeployment(ModelNode operation, ModelNode model) { + ModelNode deployment = model.clone(); + this.secureDeployments.put(deploymentNameFromOp(operation), deployment); + } + + public void updateSecureDeployment(ModelNode operation, String attrName, ModelNode resolvedValue) { + ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); + deployment.get(attrName).set(resolvedValue); + } + + public void removeSecureDeployment(ModelNode operation) { + this.secureDeployments.remove(deploymentNameFromOp(operation)); + } + + public void addCredential(ModelNode operation, ModelNode model) { + ModelNode credentials = credentialsFromOp(operation); + if (!credentials.isDefined()) { + credentials = new ModelNode(); + } + + String credentialName = credentialNameFromOp(operation); + credentials.get(credentialName).set(model.get("value").asString()); + + ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); + deployment.get(CREDENTIALS_JSON_NAME).set(credentials); + } + + public void removeCredential(ModelNode operation) { + ModelNode credentials = credentialsFromOp(operation); + if (!credentials.isDefined()) { + throw new RuntimeException("Can not remove credential. No credential defined for deployment in op " + operation.toString()); + } + + String credentialName = credentialNameFromOp(operation); + credentials.remove(credentialName); + } + + public void updateCredential(ModelNode operation, String attrName, ModelNode resolvedValue) { + ModelNode credentials = credentialsFromOp(operation); + if (!credentials.isDefined()) { + throw new RuntimeException("Can not update credential. No credential defined for deployment in op " + operation.toString()); + } + + String credentialName = credentialNameFromOp(operation); + credentials.get(credentialName).set(resolvedValue); + } + + private ModelNode credentialsFromOp(ModelNode operation) { + ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); + return deployment.get(CREDENTIALS_JSON_NAME); + } + + private String realmNameFromOp(ModelNode operation) { + return valueFromOpAddress(RealmDefinition.TAG_NAME, operation); + } + + private String deploymentNameFromOp(ModelNode operation) { + return valueFromOpAddress(SecureDeploymentDefinition.TAG_NAME, operation); + } + + private String credentialNameFromOp(ModelNode operation) { + return valueFromOpAddress(CredentialDefinition.TAG_NAME, operation); + } + + private String valueFromOpAddress(String addrElement, ModelNode operation) { + String deploymentName = getValueOfAddrElement(operation.get(ADDRESS), addrElement); + if (deploymentName == null) throw new RuntimeException("Can't find '" + addrElement + "' in address " + operation.toString()); + return deploymentName; + } + + private String getValueOfAddrElement(ModelNode address, String elementName) { + for (ModelNode element : address.asList()) { + if (element.has(elementName)) return element.get(elementName).asString(); + } + + return null; + } + + public String getRealmName(String deploymentName) { + ModelNode deployment = this.secureDeployments.get(deploymentName); + return deployment.get(RealmDefinition.TAG_NAME).asString(); + + } + + public String getJSON(String deploymentName) { + ModelNode deployment = this.secureDeployments.get(deploymentName); + String realmName = deployment.get(RealmDefinition.TAG_NAME).asString(); + ModelNode realm = this.realms.get(realmName); + + ModelNode json = new ModelNode(); + json.get(RealmDefinition.TAG_NAME).set(realmName); + + // Realm values set first. Some can be overridden by deployment values. + if (realm != null) setJSONValues(json, realm); + setJSONValues(json, deployment); + return json.toJSONString(true); + } + + private void setJSONValues(ModelNode json, ModelNode values) { + for (Property prop : values.asPropertyList()) { + String name = prop.getName(); + ModelNode value = prop.getValue(); + if (value.isDefined()) { + json.get(name).set(value); + } + } + } + + public boolean isSecureDeployment(String deploymentName) { + //log.info("********* CHECK KEYCLOAK DEPLOYMENT: deployments.size()" + deployments.size()); + + return this.secureDeployments.containsKey(deploymentName); + } + + public boolean isKeycloakServerDeployment(String deploymentName) { + return this.webContexts.containsKey(deploymentName); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java new file mode 100755 index 0000000000..3e968b4af6 --- /dev/null +++ b/integration/keycloak-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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java new file mode 100755 index 0000000000..a11bd01d68 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java @@ -0,0 +1,41 @@ +/* + * 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.module.ModuleDependency; +import org.jboss.as.server.deployment.module.ModuleSpecification; +import org.jboss.modules.ModuleIdentifier; +import org.jboss.modules.ModuleLoader; + +/** + * Add platform-specific modules for WildFly. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class KeycloakDependencyProcessorWildFly extends KeycloakDependencyProcessor { + + 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_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/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java similarity index 90% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java rename to integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java index 26a9bdc4e3..2d2705fb9c 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakExtension.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java @@ -14,19 +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.jboss.as.controller.ModelVersion; -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; @@ -39,14 +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 ModelVersion MGMT_API_VERSION = ModelVersion.create(1,0,0); + 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(); @@ -73,10 +71,10 @@ 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, MGMT_API_VERSION); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION.getMajor(), + MGMT_API_VERSION.getMinor(), MGMT_API_VERSION.getMicro()); 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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java new file mode 100755 index 0000000000..81ad1ce5db --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java @@ -0,0 +1,59 @@ +/* + * 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.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; + +/** + * 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 + chooseConfigDeploymentProcessor()); + } + }, OperationContext.Stage.RUNTIME); + } + + private DeploymentUnitProcessor chooseDependencyProcessor() { + return new KeycloakDependencyProcessorWildFly(); + } + + private DeploymentUnitProcessor chooseConfigDeploymentProcessor() { + return new KeycloakAdapterConfigDeploymentProcessor(); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java new file mode 100644 index 0000000000..c3562c464a --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java @@ -0,0 +1,47 @@ +/* + * 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.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; + +/** + * 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/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemParser.java b/integration/keycloak-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/keycloak-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/keycloak-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 { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.addRealm(operation, context.resolveExpressions(model)); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java new file mode 100755 index 0000000000..160a6eb202 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java @@ -0,0 +1,87 @@ +/* + * 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.controller.AttributeDefinition; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.registry.ManagementResourceRegistration; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Defines attributes and operations for the Realm + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class RealmDefinition extends SimpleResourceDefinition { + + public static final String TAG_NAME = "realm"; + + + protected static final List REALM_ONLY_ATTRIBUTES = new ArrayList(); + static { + } + + protected static final List ALL_ATTRIBUTES = new ArrayList(); + static { + ALL_ATTRIBUTES.addAll(REALM_ONLY_ATTRIBUTES); + ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); + } + + private static final Map DEFINITION_LOOKUP = new HashMap(); + static { + for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { + DEFINITION_LOOKUP.put(def.getXmlName(), def); + } + } + + private static final RealmWriteAttributeHandler realmAttrHandler = new RealmWriteAttributeHandler(ALL_ATTRIBUTES.toArray(new SimpleAttributeDefinition[0])); + + public RealmDefinition() { + super(PathElement.pathElement("realm"), + KeycloakExtension.getResourceDescriptionResolver("realm"), + RealmAddHandler.INSTANCE, + RealmRemoveHandler.INSTANCE); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + + @Override + public void registerAttributes(ManagementResourceRegistration resourceRegistration) { + super.registerAttributes(resourceRegistration); + + for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { + //TODO: use subclass of realmAttrHandler that can call RealmDefinition.validateTruststoreSetIfRequired + resourceRegistration.registerReadWriteAttribute(attrDef, null, realmAttrHandler); + } + } + + + public static SimpleAttributeDefinition lookup(String name) { + return DEFINITION_LOOKUP.get(name); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java new file mode 100644 index 0000000000..16e43618ab --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java @@ -0,0 +1,41 @@ +/* + * 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.controller.AbstractRemoveStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Remove a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class RealmRemoveHandler extends AbstractRemoveStepHandler { + + public static RealmRemoveHandler INSTANCE = new RealmRemoveHandler(); + + private RealmRemoveHandler() {} + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.removeRealm(operation); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java new file mode 100755 index 0000000000..dd1af54902 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java @@ -0,0 +1,60 @@ +/* + * 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.controller.AbstractWriteAttributeHandler; +import org.jboss.as.controller.AttributeDefinition; +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. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { + + public RealmWriteAttributeHandler(List definitions) { + this(definitions.toArray(new AttributeDefinition[definitions.size()])); + } + + public RealmWriteAttributeHandler(AttributeDefinition... definitions) { + super(definitions); + } + + @Override + protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.updateRealm(operation, attributeName, resolvedValue); + + hh.setHandback(ckService); + + return false; + } + + @Override + protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { + ckService.updateRealm(operation, attributeName, valueToRestore); + } + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java new file mode 100755 index 0000000000..a1053b1097 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java @@ -0,0 +1,61 @@ +/* + * 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.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; + +/** + * Add a deployment to a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { + + public static SecureDeploymentAddHandler INSTANCE = new SecureDeploymentAddHandler(); + + private SecureDeploymentAddHandler() {} + + @Override + protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { + // TODO: localize exception. get id number + if (!operation.get(OP).asString().equals(ADD)) { + throw new OperationFailedException("Unexpected operation for add secure deployment. operation=" + operation.toString()); + } + + for (AttributeDefinition attr : SecureDeploymentDefinition.ALL_ATTRIBUTES) { + attr.validateAndSet(operation, model); + } + } + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.addSecureDeployment(operation, context.resolveExpressions(model)); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java new file mode 100755 index 0000000000..1932cc8e8e --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java @@ -0,0 +1,130 @@ +/* + * 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.controller.AttributeDefinition; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.operations.validation.StringLengthValidator; +import org.jboss.as.controller.registry.ManagementResourceRegistration; +import org.jboss.dmr.ModelNode; +import org.jboss.dmr.ModelType; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Defines attributes and operations for a secure-deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class SecureDeploymentDefinition extends SimpleResourceDefinition { + + public static final String TAG_NAME = "secure-deployment"; + + protected static final SimpleAttributeDefinition REALM = + new SimpleAttributeDefinitionBuilder("realm", ModelType.STRING, true) + .setXmlName("realm") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition RESOURCE = + new SimpleAttributeDefinitionBuilder("resource", ModelType.STRING, true) + .setXmlName("resource") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition USE_RESOURCE_ROLE_MAPPINGS = + new SimpleAttributeDefinitionBuilder("use-resource-role-mappings", ModelType.BOOLEAN, true) + .setXmlName("use-resource-role-mappings") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition BEARER_ONLY = + new SimpleAttributeDefinitionBuilder("bearer-only", ModelType.BOOLEAN, true) + .setXmlName("bearer-only") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition ENABLE_BASIC_AUTH = + new SimpleAttributeDefinitionBuilder("enable-basic-auth", ModelType.BOOLEAN, true) + .setXmlName("enable-basic-auth") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition PUBLIC_CLIENT = + new SimpleAttributeDefinitionBuilder("public-client", ModelType.BOOLEAN, true) + .setXmlName("public-client") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + + protected static final List DEPLOYMENT_ONLY_ATTRIBUTES = new ArrayList(); + static { + DEPLOYMENT_ONLY_ATTRIBUTES.add(REALM); + DEPLOYMENT_ONLY_ATTRIBUTES.add(RESOURCE); + DEPLOYMENT_ONLY_ATTRIBUTES.add(USE_RESOURCE_ROLE_MAPPINGS); + DEPLOYMENT_ONLY_ATTRIBUTES.add(BEARER_ONLY); + DEPLOYMENT_ONLY_ATTRIBUTES.add(ENABLE_BASIC_AUTH); + DEPLOYMENT_ONLY_ATTRIBUTES.add(PUBLIC_CLIENT); + } + + protected static final List ALL_ATTRIBUTES = new ArrayList(); + static { + ALL_ATTRIBUTES.addAll(DEPLOYMENT_ONLY_ATTRIBUTES); + ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); + } + + private static final Map DEFINITION_LOOKUP = new HashMap(); + static { + for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { + DEFINITION_LOOKUP.put(def.getXmlName(), def); + } + } + + private static SecureDeploymentWriteAttributeHandler attrHandler = new SecureDeploymentWriteAttributeHandler(ALL_ATTRIBUTES); + + public SecureDeploymentDefinition() { + super(PathElement.pathElement(TAG_NAME), + KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), + SecureDeploymentAddHandler.INSTANCE, + SecureDeploymentRemoveHandler.INSTANCE); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + + @Override + public void registerAttributes(ManagementResourceRegistration resourceRegistration) { + super.registerAttributes(resourceRegistration); + for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { + resourceRegistration.registerReadWriteAttribute(attrDef, null, attrHandler); + } + } + + public static SimpleAttributeDefinition lookup(String name) { + return DEFINITION_LOOKUP.get(name); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java new file mode 100644 index 0000000000..6e2aefc1ef --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java @@ -0,0 +1,41 @@ +/* + * 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.controller.AbstractRemoveStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Remove a secure-deployment from a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandler { + + public static SecureDeploymentRemoveHandler INSTANCE = new SecureDeploymentRemoveHandler(); + + private SecureDeploymentRemoveHandler() {} + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.removeSecureDeployment(operation); + } +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java new file mode 100755 index 0000000000..6ed9d55b42 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java @@ -0,0 +1,59 @@ +/* + * 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.controller.AbstractWriteAttributeHandler; +import org.jboss.as.controller.AttributeDefinition; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.dmr.ModelNode; + +import java.util.List; + +/** + * Update an attribute on a secure-deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttributeHandler { + + public SecureDeploymentWriteAttributeHandler(List definitions) { + this(definitions.toArray(new AttributeDefinition[definitions.size()])); + } + + public SecureDeploymentWriteAttributeHandler(AttributeDefinition... definitions) { + super(definitions); + } + + @Override + protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + hh.setHandback(ckService); + ckService.updateSecureDeployment(operation, attributeName, resolvedValue); + return false; + } + + @Override + protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { + ckService.updateSecureDeployment(operation, attributeName, valueToRestore); + } + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java new file mode 100755 index 0000000000..f7abc0485a --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java @@ -0,0 +1,228 @@ +/* + * 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.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; +import org.jboss.as.controller.operations.validation.IntRangeValidator; +import org.jboss.as.controller.operations.validation.StringLengthValidator; +import org.jboss.dmr.ModelNode; +import org.jboss.dmr.ModelType; + +import java.util.ArrayList; +import java.util.List; + +/** + * Defines attributes that can be present in both a realm and an application (secure-deployment). + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class SharedAttributeDefinitons { + + protected static final SimpleAttributeDefinition REALM_PUBLIC_KEY = + new SimpleAttributeDefinitionBuilder("realm-public-key", ModelType.STRING, true) + .setXmlName("realm-public-key") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition AUTH_SERVER_URL = + new SimpleAttributeDefinitionBuilder("auth-server-url", ModelType.STRING, true) + .setXmlName("auth-server-url") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition SSL_REQUIRED = + new SimpleAttributeDefinitionBuilder("ssl-required", ModelType.STRING, true) + .setXmlName("ssl-required") + .setAllowExpression(true) + .setDefaultValue(new ModelNode("external")) + .build(); + protected static final SimpleAttributeDefinition ALLOW_ANY_HOSTNAME = + new SimpleAttributeDefinitionBuilder("allow-any-hostname", ModelType.BOOLEAN, true) + .setXmlName("allow-any-hostname") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition DISABLE_TRUST_MANAGER = + new SimpleAttributeDefinitionBuilder("disable-trust-manager", ModelType.BOOLEAN, true) + .setXmlName("disable-trust-manager") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition TRUSTSTORE = + new SimpleAttributeDefinitionBuilder("truststore", ModelType.STRING, true) + .setXmlName("truststore") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition TRUSTSTORE_PASSWORD = + new SimpleAttributeDefinitionBuilder("truststore-password", ModelType.STRING, true) + .setXmlName("truststore-password") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CONNECTION_POOL_SIZE = + new SimpleAttributeDefinitionBuilder("connection-pool-size", ModelType.INT, true) + .setXmlName("connection-pool-size") + .setAllowExpression(true) + .setValidator(new IntRangeValidator(0, true)) + .build(); + + protected static final SimpleAttributeDefinition ENABLE_CORS = + new SimpleAttributeDefinitionBuilder("enable-cors", ModelType.BOOLEAN, true) + .setXmlName("enable-cors") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition CLIENT_KEYSTORE = + new SimpleAttributeDefinitionBuilder("client-keystore", ModelType.STRING, true) + .setXmlName("client-keystore") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CLIENT_KEYSTORE_PASSWORD = + new SimpleAttributeDefinitionBuilder("client-keystore-password", ModelType.STRING, true) + .setXmlName("client-keystore-password") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CLIENT_KEY_PASSWORD = + new SimpleAttributeDefinitionBuilder("client-key-password", ModelType.STRING, true) + .setXmlName("client-key-password") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CORS_MAX_AGE = + new SimpleAttributeDefinitionBuilder("cors-max-age", ModelType.INT, true) + .setXmlName("cors-max-age") + .setAllowExpression(true) + .setValidator(new IntRangeValidator(-1, true)) + .build(); + protected static final SimpleAttributeDefinition CORS_ALLOWED_HEADERS = + new SimpleAttributeDefinitionBuilder("cors-allowed-headers", ModelType.STRING, true) + .setXmlName("cors-allowed-headers") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CORS_ALLOWED_METHODS = + new SimpleAttributeDefinitionBuilder("cors-allowed-methods", ModelType.STRING, true) + .setXmlName("cors-allowed-methods") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition EXPOSE_TOKEN = + new SimpleAttributeDefinitionBuilder("expose-token", ModelType.BOOLEAN, true) + .setXmlName("expose-token") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition AUTH_SERVER_URL_FOR_BACKEND_REQUESTS = + new SimpleAttributeDefinitionBuilder("auth-server-url-for-backend-requests", ModelType.STRING, true) + .setXmlName("auth-server-url-for-backend-requests") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition ALWAYS_REFRESH_TOKEN = + new SimpleAttributeDefinitionBuilder("always-refresh-token", ModelType.BOOLEAN, true) + .setXmlName("always-refresh-token") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition REGISTER_NODE_AT_STARTUP = + new SimpleAttributeDefinitionBuilder("register-node-at-startup", ModelType.BOOLEAN, true) + .setXmlName("register-node-at-startup") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition REGISTER_NODE_PERIOD = + new SimpleAttributeDefinitionBuilder("register-node-period", ModelType.INT, true) + .setXmlName("register-node-period") + .setAllowExpression(true) + .setValidator(new IntRangeValidator(-1, true)) + .build(); + protected static final SimpleAttributeDefinition TOKEN_STORE = + new SimpleAttributeDefinitionBuilder("token-store", ModelType.STRING, true) + .setXmlName("token-store") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition PRINCIPAL_ATTRIBUTE = + new SimpleAttributeDefinitionBuilder("principal-attribute", ModelType.STRING, true) + .setXmlName("principal-attribute") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + + + + protected static final List ATTRIBUTES = new ArrayList(); + static { + ATTRIBUTES.add(REALM_PUBLIC_KEY); + ATTRIBUTES.add(AUTH_SERVER_URL); + ATTRIBUTES.add(TRUSTSTORE); + ATTRIBUTES.add(TRUSTSTORE_PASSWORD); + ATTRIBUTES.add(SSL_REQUIRED); + ATTRIBUTES.add(ALLOW_ANY_HOSTNAME); + ATTRIBUTES.add(DISABLE_TRUST_MANAGER); + ATTRIBUTES.add(CONNECTION_POOL_SIZE); + ATTRIBUTES.add(ENABLE_CORS); + ATTRIBUTES.add(CLIENT_KEYSTORE); + ATTRIBUTES.add(CLIENT_KEYSTORE_PASSWORD); + ATTRIBUTES.add(CLIENT_KEY_PASSWORD); + ATTRIBUTES.add(CORS_MAX_AGE); + ATTRIBUTES.add(CORS_ALLOWED_HEADERS); + ATTRIBUTES.add(CORS_ALLOWED_METHODS); + ATTRIBUTES.add(EXPOSE_TOKEN); + ATTRIBUTES.add(AUTH_SERVER_URL_FOR_BACKEND_REQUESTS); + ATTRIBUTES.add(ALWAYS_REFRESH_TOKEN); + ATTRIBUTES.add(REGISTER_NODE_AT_STARTUP); + ATTRIBUTES.add(REGISTER_NODE_PERIOD); + ATTRIBUTES.add(TOKEN_STORE); + ATTRIBUTES.add(PRINCIPAL_ATTRIBUTE); + } + + /** + * truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false. + * + * @param attributes The full set of attributes. + * + * @return true if the attributes are valid, false otherwise. + */ + public static boolean validateTruststoreSetIfRequired(ModelNode attributes) { + if (isSet(attributes, DISABLE_TRUST_MANAGER)) { + return true; + } + + if (isSet(attributes, SSL_REQUIRED) && attributes.get(SSL_REQUIRED.getName()).asString().equals("none")) { + return true; + } + + return isSet(attributes, TRUSTSTORE) && isSet(attributes, TRUSTSTORE_PASSWORD); + } + + private static boolean isSet(ModelNode attributes, SimpleAttributeDefinition def) { + ModelNode attribute = attributes.get(def.getName()); + + if (def.getType() == ModelType.BOOLEAN) { + return attribute.isDefined() && attribute.asBoolean(); + } + + return attribute.isDefined() && !attribute.asString().isEmpty(); + } + + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java new file mode 100755 index 0000000000..de0bb4b9cb --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java @@ -0,0 +1,45 @@ +/* + * 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.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"); + + @LogMessage(level = INFO) + @Message(value = "Keycloak subsystem override for deployment %s") + void deploymentSecured(String deployment); + + +} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java new file mode 100755 index 0000000000..a45b0b82a9 --- /dev/null +++ b/integration/keycloak-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/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension new file mode 100644 index 0000000000..b759b38f86 --- /dev/null +++ b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-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-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd b/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd new file mode 100755 index 0000000000..271b2428da --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the realm. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the realm. + + + + + + + + + + + + diff --git a/integration/keycloak-subsystem/src/main/resources/subsystem-templates/keycloak.xml b/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml similarity index 93% rename from integration/keycloak-subsystem/src/main/resources/subsystem-templates/keycloak.xml rename to integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml index 8a6256704d..654297a8e3 100644 --- a/integration/keycloak-subsystem/src/main/resources/subsystem-templates/keycloak.xml +++ b/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml @@ -1,8 +1,8 @@ - org.keycloak.keycloak-subsystem - + org.keycloak.keycloak-adapter-subsystem + diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java new file mode 100755 index 0000000000..2865bc4341 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java @@ -0,0 +1,89 @@ +/* + * 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.dmr.ModelNode; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.keycloak.subsystem.adapter.extension.SharedAttributeDefinitons; + + +/** + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class RealmDefinitionTestCase { + + private ModelNode model; + + @Before + public void setUp() { + model = new ModelNode(); + model.get("realm").set("demo"); + model.get("resource").set("customer-portal"); + model.get("realm-public-key").set("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); + model.get("auth-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/login"); + model.get("code-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/access/codes"); + model.get("expose-token").set(true); + ModelNode credential = new ModelNode(); + credential.get("password").set("password"); + model.get("credentials").set(credential); + } + + @Test + public void testIsTruststoreSetIfRequired() throws Exception { + model.get("ssl-required").set("none"); + model.get("disable-trust-manager").set(true); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("none"); + model.get("disable-trust-manager").set(false); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(true); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(false); + Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("external"); + model.get("disable-trust-manager").set(false); + Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(false); + model.get("truststore").set("foo"); + Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(false); + model.get("truststore").set("foo"); + model.get("truststore-password").set("password"); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("external"); + model.get("disable-trust-manager").set(false); + model.get("truststore").set("foo"); + model.get("truststore-password").set("password"); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + } + +} diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java new file mode 100755 index 0000000000..936c9f3431 --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java @@ -0,0 +1,172 @@ +/* + * 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 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 org.keycloak.subsystem.adapter.extension.KeycloakExtension; + +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/keycloak-server-subsystem/pom.xml b/integration/keycloak-server-subsystem/pom.xml new file mode 100755 index 0000000000..e5ea27c899 --- /dev/null +++ b/integration/keycloak-server-subsystem/pom.xml @@ -0,0 +1,125 @@ + + + + 4.0.0 + + + org.keycloak + keycloak-parent + 1.2.0.RC1-SNAPSHOT + ../../pom.xml + + + keycloak-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 + + false + true + + + jboss.home + ${jboss.home} + + + + **/*TestCase.java + + + + + + + + + org.wildfly.core + wildfly-controller + provided + + + org.wildfly.core + wildfly-server + provided + + + org.wildfly.core + wildfly-version + provided + + + org.wildfly + wildfly-ee + provided + + + org.wildfly + wildfly-undertow + 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 + pom + 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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java index 1fe9958b15..298b1267e2 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialAddHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialDefinition.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialDefinition.java index 5524636559..49c89eb64f 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialDefinition.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/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.server.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/CredentialReadWriteAttributeHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java index 75b334d3dd..646191570b 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialReadWriteAttributeHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java index 0023d41cc1..f7a00c72ff 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/CredentialRemoveHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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/Environment.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/Environment.java similarity index 93% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/Environment.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/Environment.java index ceb1d51fad..b11b2396c3 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/Environment.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/Environment.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.version.Version; import org.jboss.modules.Module; @@ -28,7 +28,7 @@ import org.jboss.modules.ModuleLoadException; * @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 ModuleIdentifier KEYCLOAK_SUBSYSTEM = ModuleIdentifier.create("org.keycloak.keycloak-server-subsystem"); private static final boolean isWildFly = findIsWildFly(); diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java index bebf6dbe54..e96d57a477 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigDeploymentProcessor.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java similarity index 99% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java index 81bb610138..2e99e85171 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.dmr.ModelNode; import org.jboss.dmr.Property; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakDependencyProcessor.java b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-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/keycloak-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/keycloak-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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java new file mode 100755 index 0000000000..3f431d2449 --- /dev/null +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java @@ -0,0 +1,80 @@ +/* + * 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.getMajor(), + MGMT_API_VERSION.getMinor(), MGMT_API_VERSION.getMicro()); + + ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); + registration.registerSubModel(AUTH_SERVER_DEFINITION); + subsystem.registerXMLElementWriter(PARSER); + } +} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java similarity index 94% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java index e203e8120e..ae5c74439d 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.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.server.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; @@ -25,7 +25,7 @@ import org.jboss.as.server.deployment.Phase; import org.jboss.dmr.ModelNode; import org.jboss.as.server.deployment.DeploymentUnitProcessor; -import org.keycloak.subsystem.extension.authserver.KeycloakServerDeploymentProcessor; +import org.keycloak.subsystem.server.extension.authserver.KeycloakServerDeploymentProcessor; /** * The Keycloak subsystem add update handler. diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java index 8eedbcc62e..f553188251 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/KeycloakSubsystemDefinition.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.controller.ReloadRequiredRemoveStepHandler; import org.jboss.as.controller.SimpleResourceDefinition; diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java new file mode 100755 index 0000000000..199e26284c --- /dev/null +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java @@ -0,0 +1,141 @@ +/* + * 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.ArrayList; +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(); + } + } + + // code taken from org.jboss.as.controller.AttributeMarshaller + private void writeCharacters(XMLExtendedStreamWriter writer, String content) throws XMLStreamException { + if (content.indexOf('\n') > -1) { + // Multiline content. Use the overloaded variant that staxmapper will format + writer.writeCharacters(content); + } else { + // Staxmapper will just output the chars without adding newlines if this is used + char[] chars = content.toCharArray(); + writer.writeCharacters(chars, 0, chars.length); + } + } + +} diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java index 94d3ed65d4..3a09c0a8e5 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmAddHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.AttributeDefinition; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmDefinition.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmDefinition.java index 334417d8b8..fe3a049ea5 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmDefinition.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/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.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java index 6bda383ef0..5715fa1641 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmRemoveHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java index 36833b6a8e..42dc858d10 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/RealmWriteAttributeHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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/SecureDeploymentAddHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java index 9198bf54f4..5703f68b30 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentAddHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.as.controller.AbstractAddStepHandler; import org.jboss.as.controller.OperationContext; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentDefinition.java similarity index 99% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentDefinition.java index 1ac65f0ea8..5c349caa64 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentDefinition.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/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.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java index f1f0c15ce0..dafef213f0 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentRemoveHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java index 8ababe928e..df5c9d235a 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SecureDeploymentWriteAttributeHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java @@ -15,7 +15,7 @@ * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SharedAttributeDefinitons.java similarity index 99% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SharedAttributeDefinitons.java index 164136ed52..eaec56dc12 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/SharedAttributeDefinitons.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/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.server.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/extension/authserver/AbstractAddOverlayHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java index 9d038237e4..7bf620f3d9 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AbstractAddOverlayHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java @@ -14,11 +14,10 @@ * 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 static org.keycloak.subsystem.extension.authserver.AuthServerUtil.getHandler; import java.util.Set; @@ -108,7 +107,7 @@ public abstract class AbstractAddOverlayHandler extends AbstractAddStepHandler{ 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 model) throws OperationFailedException { @@ -177,7 +176,7 @@ public abstract class AbstractAddOverlayHandler extends AbstractAddStepHandler{ 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) throws OperationFailedException { diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java index 0300700bec..8d8694d199 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AddProviderHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.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/AuthServerAddHandler.java b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java index 43763f0776..7cfe27bdbc 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerDefinition.java +++ b/integration/keycloak-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 diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerRemoveHandler.java b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerUtil.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java index bf8074b4e5..5f87253d79 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerUtil.java +++ b/integration/keycloak-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,7 +85,7 @@ public class AuthServerUtil { private URI findAuthServerUri() throws IllegalStateException { try { - URL subsysJar = this.subsysModule.getExportedResource("keycloak-subsystem-" + this.keycloakVersion + ".jar"); + URL subsysJar = this.subsysModule.getExportedResource("keycloak-server-subsystem-" + this.keycloakVersion + ".jar"); File subsysDir = new File(subsysJar.toURI()).getParentFile(); File authServerDir = new File(subsysDir, "auth-server"); if (this.isAuthServerExploded) { @@ -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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java similarity index 96% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java index 6a81fae3bf..3fd16cc6fc 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/AuthServerWriteAttributeHandler.java +++ b/integration/keycloak-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. diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/KeycloakServerDeploymentProcessor.java b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java similarity index 98% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java index 162c45d9c1..4b5b17e7ea 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/ListOverlaysHandler.java +++ b/integration/keycloak-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; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/OverlayKeycloakServerJsonHandler.java b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java similarity index 95% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java index c22e122605..022e96c321 100644 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/extension/authserver/RemoveOverlayHandler.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java @@ -15,9 +15,9 @@ * the License. */ -package org.keycloak.subsystem.extension.authserver; +package org.keycloak.subsystem.server.extension.authserver; -import static org.keycloak.subsystem.extension.authserver.AbstractAddOverlayHandler.REDEPLOY_SERVER; +import static org.keycloak.subsystem.server.extension.authserver.AbstractAddOverlayHandler.REDEPLOY_SERVER; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationDefinition; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakLogger.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java similarity index 97% rename from integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakLogger.java rename to integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java index 55694d22df..752a25888d 100755 --- a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakLogger.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/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.server.logging; import org.jboss.logging.BasicLogger; import org.jboss.logging.Logger; diff --git a/integration/keycloak-subsystem/src/main/java/org/keycloak/subsystem/logging/KeycloakMessages.java b/integration/keycloak-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/keycloak-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/keycloak-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/keycloak-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/keycloak-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension new file mode 100644 index 0000000000..36b9edb9f0 --- /dev/null +++ b/integration/keycloak-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/keycloak-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties b/integration/keycloak-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties new file mode 100755 index 0000000000..f09e3bd189 --- /dev/null +++ b/integration/keycloak-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/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd b/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd similarity index 98% rename from integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd rename to integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd index e9297eb246..978dc02506 100755 --- a/integration/keycloak-subsystem/src/main/resources/schema/wildfly-keycloak_1_0.xsd +++ b/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd @@ -1,8 +1,8 @@ diff --git a/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml b/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml new file mode 100644 index 0000000000..904df4e08a --- /dev/null +++ b/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml @@ -0,0 +1,34 @@ + + + + org.keycloak.keycloak-server-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/RealmDefinitionTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java similarity index 96% rename from integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/RealmDefinitionTestCase.java rename to integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java index c21ff20ce6..a658986f83 100755 --- a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/RealmDefinitionTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java @@ -14,14 +14,14 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.keycloak.subsystem.extension; +package org.keycloak.subsystem.server.extension; import org.jboss.dmr.ModelNode; import org.junit.Assert; import org.junit.Before; import org.junit.Test; - +import org.keycloak.subsystem.server.extension.SharedAttributeDefinitons; /** diff --git a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/SubsystemParsingTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java similarity index 96% rename from integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/SubsystemParsingTestCase.java rename to integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java index f57a73b87f..e178561fb9 100755 --- a/integration/keycloak-subsystem/src/test/java/org/keycloak/subsystem/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.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.server.extension; import java.io.IOException; @@ -22,6 +22,7 @@ import java.io.IOException; import org.jboss.as.subsystem.test.AbstractSubsystemBaseTest; import org.jboss.dmr.ModelNode; import org.junit.Test; +import org.keycloak.subsystem.server.extension.KeycloakExtension; /** 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/pom.xml b/integration/pom.xml index f79be4ec40..9f1680cb35 100755 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -24,7 +24,8 @@ undertow wildfly-adapter wildfly-extensions - keycloak-subsystem + keycloak-server-subsystem + keycloak-adapter-subsystem keycloak-as7-subsystem js installed diff --git a/pom.xml b/pom.xml index 07246fbcb9..b223431d03 100755 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ 1.5.10 7.1.1.Final 8.2.0.Final - 1.0.0.Alpha12 + 1.0.0.Beta3 1.0.2.Final 2.2 1.14.1-beta 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 From 3c76a856741df4394a24792f42c79fbcbd91117c Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Wed, 29 Apr 2015 14:40:02 +0200 Subject: [PATCH 04/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - More code and pom cleanup --- .../keycloak-adapter-subsystem/pom.xml | 32 +-- .../extension/CredentialAddHandler.java | 4 - .../extension/KeycloakSubsystemAdd.java | 9 +- .../adapter/extension/RealmAddHandler.java | 3 + .../extension/SecureDeploymentAddHandler.java | 3 + .../resources/schema/wildfly-keycloak_1_1.xsd | 4 +- .../extension/SubsystemParsingTestCase.java | 129 ++-------- .../adapter/extension/keycloak-1.1.xml | 24 ++ integration/keycloak-server-subsystem/pom.xml | 10 +- .../extension/CredentialAddHandler.java | 43 ---- .../extension/CredentialDefinition.java | 61 ----- .../CredentialReadWriteAttributeHandler.java | 50 ---- .../extension/CredentialRemoveHandler.java | 42 ---- .../server/extension/Environment.java | 58 ----- ...cloakAdapterConfigDeploymentProcessor.java | 131 ---------- .../KeycloakAdapterConfigService.java | 133 ---------- .../extension/KeycloakSubsystemAdd.java | 18 +- .../extension/KeycloakSubsystemParser.java | 1 - .../server/extension/RealmAddHandler.java | 54 ----- .../server/extension/RealmDefinition.java | 87 ------- .../server/extension/RealmRemoveHandler.java | 41 ---- .../extension/RealmWriteAttributeHandler.java | 60 ----- .../extension/SecureDeploymentAddHandler.java | 43 ---- .../extension/SecureDeploymentDefinition.java | 130 ---------- .../SecureDeploymentRemoveHandler.java | 41 ---- ...SecureDeploymentWriteAttributeHandler.java | 59 ----- .../extension/SharedAttributeDefinitons.java | 227 ------------------ .../subsystem-templates/keycloak.xml | 34 --- .../extension/RealmDefinitionTestCase.java | 89 ------- .../extension/SubsystemParsingTestCase.java | 8 - pom.xml | 6 +- 31 files changed, 80 insertions(+), 1554 deletions(-) create mode 100644 integration/keycloak-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialDefinition.java delete mode 100644 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java delete mode 100644 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java delete mode 100644 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/Environment.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmDefinition.java delete mode 100644 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentDefinition.java delete mode 100644 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java delete mode 100755 integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SharedAttributeDefinitons.java delete mode 100644 integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml delete mode 100755 integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java diff --git a/integration/keycloak-adapter-subsystem/pom.xml b/integration/keycloak-adapter-subsystem/pom.xml index 5a0c150f00..eb1d7c9797 100755 --- a/integration/keycloak-adapter-subsystem/pom.xml +++ b/integration/keycloak-adapter-subsystem/pom.xml @@ -31,14 +31,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven.compiler.source} - ${maven.compiler.target} - - org.apache.maven.plugins maven-surefire-plugin @@ -70,7 +62,7 @@ wildfly-server provided - + + + org.jboss.metadata + jboss-metadata-common + 8.1.2.Final + provided org.wildfly - wildfly-undertow + wildfly-web-common provided @@ -106,25 +104,19 @@ org.wildfly.core - wildfly-subsystem-test - pom + wildfly-subsystem-test-framework test + 1.0.0.Beta3 junit junit 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/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java index 2b9fcb73b0..2b9852c32e 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java @@ -21,11 +21,7 @@ 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. diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java index 81ad1ce5db..9489179b68 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java @@ -19,12 +19,16 @@ package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; +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.as.server.deployment.DeploymentUnitProcessor; +import org.jboss.msc.service.ServiceController; + +import java.util.List; /** * The Keycloak subsystem add update handler. @@ -35,8 +39,11 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); + /* + * TODO: Fix deprecated signature when dropping WildFly 8 support + */ @Override - protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model) { + protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) { context.addStep(new AbstractDeploymentChainStep() { @Override protected void execute(DeploymentProcessorTarget processorTarget) { diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java index 9789a21006..df14e742f0 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java @@ -58,6 +58,9 @@ public final class RealmAddHandler extends AbstractAddStepHandler { } } + /* + * TODO: Fix deprecated signature when dropping WildFly 8 support + */ @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java index a1053b1097..1008d5552e 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java @@ -53,6 +53,9 @@ public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { } } + /* + * TODO: Fix deprecated signature when dropping WildFly 8 support + */ @Override protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) throws OperationFailedException { KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); diff --git a/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd b/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd index 271b2428da..269b3232dd 100755 --- a/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd +++ b/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd @@ -40,7 +40,7 @@ - + @@ -67,7 +67,7 @@ - + diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java index 936c9f3431..d27ecd79a1 100755 --- a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java @@ -16,19 +16,11 @@ */ package org.keycloak.subsystem.adapter.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.as.subsystem.test.AbstractSubsystemBaseTest; import org.jboss.dmr.ModelNode; import org.junit.Test; -import org.keycloak.subsystem.adapter.extension.KeycloakExtension; -import java.util.List; - -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.*; +import java.io.IOException; /** @@ -38,8 +30,10 @@ import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.*; * is hidden inside of test harness * * @author Kabir Khan + * @author Tomaz Cerar + * @author Marko Strukelj */ -public class SubsystemParsingTestCase extends AbstractSubsystemTest { +public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { public SubsystemParsingTestCase() { super(KeycloakExtension.SUBSYSTEM_NAME, new KeycloakExtension()); @@ -61,112 +55,21 @@ public class SubsystemParsingTestCase extends AbstractSubsystemTest { 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()); + @Override + protected String getSubsystemXml() throws IOException { + return readResource("keycloak-1.1.xml"); } - /** - * 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)); + @Override + protected String getSubsystemXsdPath() throws Exception { + return "schema/wildfly-keycloak_1_1.xsd"; } - /** - * 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 + @Override + protected String[] getSubsystemTemplatePaths() throws IOException { + return new String[]{ + "/subsystem-templates/keycloak.xml" + }; } } diff --git a/integration/keycloak-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml b/integration/keycloak-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/keycloak-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/keycloak-server-subsystem/pom.xml b/integration/keycloak-server-subsystem/pom.xml index e5ea27c899..c58bdd4cee 100755 --- a/integration/keycloak-server-subsystem/pom.xml +++ b/integration/keycloak-server-subsystem/pom.xml @@ -31,14 +31,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven.compiler.source} - ${maven.compiler.target} - - org.apache.maven.plugins maven-surefire-plugin @@ -82,7 +74,7 @@ org.wildfly - wildfly-undertow + wildfly-web-common provided diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java deleted file mode 100755 index 298b1267e2..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialAddHandler.java +++ /dev/null @@ -1,43 +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.server.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.dmr.ModelNode; - -/** - * Add a credential to a deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class CredentialAddHandler extends AbstractAddStepHandler { - - public CredentialAddHandler(AttributeDefinition... attributes) { - super(attributes); - } - - @Override - 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-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialDefinition.java deleted file mode 100755 index 49c89eb64f..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialDefinition.java +++ /dev/null @@ -1,61 +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.server.extension; - -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; -import org.jboss.as.controller.operations.validation.StringLengthValidator; -import org.jboss.as.controller.registry.ManagementResourceRegistration; -import org.jboss.dmr.ModelType; - -/** - * Defines attributes and operations for a credential. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class CredentialDefinition extends SimpleResourceDefinition { - - public static final String TAG_NAME = "credential"; - - protected static final AttributeDefinition VALUE = - new SimpleAttributeDefinitionBuilder("value", ModelType.STRING, false) - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) - .build(); - - public CredentialDefinition() { - super(PathElement.pathElement(TAG_NAME), - KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), - new CredentialAddHandler(VALUE), - CredentialRemoveHandler.INSTANCE); - } - - @Override - public void registerOperations(ManagementResourceRegistration resourceRegistration) { - super.registerOperations(resourceRegistration); - resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); - } - - @Override - public void registerAttributes(ManagementResourceRegistration resourceRegistration) { - super.registerAttributes(resourceRegistration); - resourceRegistration.registerReadWriteAttribute(VALUE, null, new CredentialReadWriteAttributeHandler()); - } -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java deleted file mode 100644 index 646191570b..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialReadWriteAttributeHandler.java +++ /dev/null @@ -1,50 +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.server.extension; - -import org.jboss.as.controller.AbstractWriteAttributeHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Update a credential value. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class CredentialReadWriteAttributeHandler extends AbstractWriteAttributeHandler { - - @Override - protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode resolvedValue, ModelNode currentValue, AbstractWriteAttributeHandler.HandbackHolder hh) throws OperationFailedException { - - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.updateCredential(operation, attributeName, resolvedValue); - - hh.setHandback(ckService); - - return false; - } - - @Override - protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { - ckService.updateCredential(operation, attributeName, valueToRestore); - } - -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java deleted file mode 100644 index f7a00c72ff..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/CredentialRemoveHandler.java +++ /dev/null @@ -1,42 +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.server.extension; - -import org.jboss.as.controller.AbstractRemoveStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Remove a credential from a deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public final class CredentialRemoveHandler extends AbstractRemoveStepHandler { - - public static CredentialRemoveHandler INSTANCE = new CredentialRemoveHandler(); - - private CredentialRemoveHandler() {} - - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.removeCredential(operation); - } - -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/Environment.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/Environment.java deleted file mode 100644 index b11b2396c3..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/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.server.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-server-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-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java deleted file mode 100755 index e96d57a477..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigDeploymentProcessor.java +++ /dev/null @@ -1,131 +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.server.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.common.WarMetaData; -import org.jboss.logging.Logger; -import org.jboss.metadata.javaee.spec.ParamValueMetaData; -import org.jboss.metadata.web.jboss.JBossWebMetaData; -import org.jboss.metadata.web.spec.LoginConfigMetaData; -import org.keycloak.subsystem.server.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. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitProcessor { - protected Logger log = Logger.getLogger(KeycloakAdapterConfigDeploymentProcessor.class); - - // This param name is defined again in Keycloak Undertow Integration class - // org.keycloak.adapters.undertow.KeycloakServletExtension. We have this value in - // two places to avoid dependency between Keycloak Subsystem and Keyclaok Undertow Integration. - public static final String AUTH_DATA_PARAM_NAME = "org.keycloak.json.adapterConfig"; - - // not sure if we need this yet, keeping here just in case - protected void addSecurityDomain(DeploymentUnit deploymentUnit, KeycloakAdapterConfigService service) { - String deploymentName = deploymentUnit.getName(); - if (!service.isSecureDeployment(deploymentName)) { - return; - } - 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 || !loginConfig.getAuthMethod().equalsIgnoreCase("KEYCLOAK")) { - return; - } - - webMetaData.setSecurityDomain("keycloak"); - } - - @Override - public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { - DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); - - String deploymentName = deploymentUnit.getName(); - KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); - if (service.isSecureDeployment(deploymentName)) { - addKeycloakAuthData(phaseContext, deploymentName, service); - } - - // FYI, Undertow Extension will find deployments that have auth-method set to KEYCLOAK - - // todo notsure if we need this - // addSecurityDomain(deploymentUnit, service); - } - - private void addKeycloakAuthData(DeploymentPhaseContext phaseContext, String deploymentName, KeycloakAdapterConfigService service) throws DeploymentUnitProcessingException { - DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); - WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); - if (warMetaData == null) { - throw new DeploymentUnitProcessingException("WarMetaData not found for " + deploymentName + ". Make sure you have specified a WAR as your secure-deployment in the Keycloak subsystem."); - } - - addJSONData(service.getJSON(deploymentName), warMetaData); - JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); - if (webMetaData == null) { - webMetaData = new JBossWebMetaData(); - warMetaData.setMergedJBossWebMetaData(webMetaData); - } - - LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); - if (loginConfig == null) { - loginConfig = new LoginConfigMetaData(); - webMetaData.setLoginConfig(loginConfig); - } - loginConfig.setAuthMethod("KEYCLOAK"); - loginConfig.setRealmName(service.getRealmName(deploymentName)); - KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentName); - } - - 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(AUTH_DATA_PARAM_NAME); - param.setParamValue(json); - contextParams.add(param); - - webMetaData.setContextParams(contextParams); - } - - @Override - public void undeploy(DeploymentUnit du) { - - } - -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java index 2e99e85171..b1842b9dba 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java @@ -18,8 +18,6 @@ package org.keycloak.subsystem.server.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,8 +31,6 @@ 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(); @@ -42,8 +38,6 @@ public final class KeycloakAdapterConfigService { return INSTANCE; } - private final Map realms = new HashMap(); - // keycloak-secured deployments private final Map secureDeployments = new HashMap(); @@ -71,133 +65,6 @@ public final class KeycloakAdapterConfigService { return webContexts.containsValue(webContext); } - public void addRealm(ModelNode operation, ModelNode model) { - this.realms.put(realmNameFromOp(operation), model.clone()); - } - - public void updateRealm(ModelNode operation, String attrName, ModelNode resolvedValue) { - ModelNode realm = this.realms.get(realmNameFromOp(operation)); - realm.get(attrName).set(resolvedValue); - } - - public void removeRealm(ModelNode operation) { - this.realms.remove(realmNameFromOp(operation)); - } - - public void addSecureDeployment(ModelNode operation, ModelNode model) { - ModelNode deployment = model.clone(); - this.secureDeployments.put(deploymentNameFromOp(operation), deployment); - } - - public void updateSecureDeployment(ModelNode operation, String attrName, ModelNode resolvedValue) { - ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); - deployment.get(attrName).set(resolvedValue); - } - - public void removeSecureDeployment(ModelNode operation) { - this.secureDeployments.remove(deploymentNameFromOp(operation)); - } - - public void addCredential(ModelNode operation, ModelNode model) { - ModelNode credentials = credentialsFromOp(operation); - if (!credentials.isDefined()) { - credentials = new ModelNode(); - } - - String credentialName = credentialNameFromOp(operation); - credentials.get(credentialName).set(model.get("value").asString()); - - ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); - deployment.get(CREDENTIALS_JSON_NAME).set(credentials); - } - - public void removeCredential(ModelNode operation) { - ModelNode credentials = credentialsFromOp(operation); - if (!credentials.isDefined()) { - throw new RuntimeException("Can not remove credential. No credential defined for deployment in op " + operation.toString()); - } - - String credentialName = credentialNameFromOp(operation); - credentials.remove(credentialName); - } - - public void updateCredential(ModelNode operation, String attrName, ModelNode resolvedValue) { - ModelNode credentials = credentialsFromOp(operation); - if (!credentials.isDefined()) { - throw new RuntimeException("Can not update credential. No credential defined for deployment in op " + operation.toString()); - } - - String credentialName = credentialNameFromOp(operation); - credentials.get(credentialName).set(resolvedValue); - } - - private ModelNode credentialsFromOp(ModelNode operation) { - ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); - return deployment.get(CREDENTIALS_JSON_NAME); - } - - private String realmNameFromOp(ModelNode operation) { - return valueFromOpAddress(RealmDefinition.TAG_NAME, operation); - } - - private String deploymentNameFromOp(ModelNode operation) { - return valueFromOpAddress(SecureDeploymentDefinition.TAG_NAME, operation); - } - - private String credentialNameFromOp(ModelNode operation) { - return valueFromOpAddress(CredentialDefinition.TAG_NAME, operation); - } - - private String valueFromOpAddress(String addrElement, ModelNode operation) { - String deploymentName = getValueOfAddrElement(operation.get(ADDRESS), addrElement); - if (deploymentName == null) throw new RuntimeException("Can't find '" + addrElement + "' in address " + operation.toString()); - return deploymentName; - } - - private String getValueOfAddrElement(ModelNode address, String elementName) { - for (ModelNode element : address.asList()) { - if (element.has(elementName)) return element.get(elementName).asString(); - } - - return null; - } - - public String getRealmName(String deploymentName) { - ModelNode deployment = this.secureDeployments.get(deploymentName); - return deployment.get(RealmDefinition.TAG_NAME).asString(); - - } - - public String getJSON(String deploymentName) { - ModelNode deployment = this.secureDeployments.get(deploymentName); - String realmName = deployment.get(RealmDefinition.TAG_NAME).asString(); - ModelNode realm = this.realms.get(realmName); - - ModelNode json = new ModelNode(); - json.get(RealmDefinition.TAG_NAME).set(realmName); - - // Realm values set first. Some can be overridden by deployment values. - if (realm != null) setJSONValues(json, realm); - setJSONValues(json, deployment); - return json.toJSONString(true); - } - - private void setJSONValues(ModelNode json, ModelNode values) { - for (Property prop : values.asPropertyList()) { - String name = prop.getName(); - ModelNode value = prop.getValue(); - if (value.isDefined()) { - json.get(name).set(value); - } - } - } - - public boolean isSecureDeployment(String deploymentName) { - //log.info("********* CHECK KEYCLOAK DEPLOYMENT: deployments.size()" + deployments.size()); - - return this.secureDeployments.containsKey(deploymentName); - } - public boolean isKeycloakServerDeployment(String deploymentName) { return this.webContexts.containsKey(deploymentName); } diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java index ae5c74439d..a49c6324a7 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java @@ -16,17 +16,20 @@ */ package org.keycloak.subsystem.server.extension; - import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; +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.as.server.deployment.DeploymentUnitProcessor; +import org.jboss.msc.service.ServiceController; import org.keycloak.subsystem.server.extension.authserver.KeycloakServerDeploymentProcessor; +import java.util.List; + /** * The Keycloak subsystem add update handler. * @@ -36,16 +39,15 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); + /* + * TODO: Fix deprecated signature when dropping WildFly 8 support + */ @Override - protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model) { + protected void performBoottime(final OperationContext context, ModelNode operation, final ModelNode model, ServiceVerificationHandler verificationHandler, List> newControllers) { 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 - chooseConfigDeploymentProcessor()); processorTarget.addDeploymentProcessor(KeycloakExtension.SUBSYSTEM_NAME, Phase.POST_MODULE, // PHASE Phase.POST_MODULE_VALIDATOR_FACTORY - 1, // PRIORITY @@ -57,8 +59,4 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { private DeploymentUnitProcessor chooseDependencyProcessor() { return new KeycloakDependencyProcessorWildFly(); } - - private DeploymentUnitProcessor chooseConfigDeploymentProcessor() { - return new KeycloakAdapterConfigDeploymentProcessor(); - } } diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java index 199e26284c..00b5cf4b11 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java @@ -34,7 +34,6 @@ import org.jboss.staxmapper.XMLExtendedStreamWriter; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; -import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java deleted file mode 100755 index 3a09c0a8e5..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmAddHandler.java +++ /dev/null @@ -1,54 +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.server.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.dmr.ModelNode; - -/** - * Add a new realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public final class RealmAddHandler extends AbstractAddStepHandler { - - public static RealmAddHandler INSTANCE = new RealmAddHandler(); - - private RealmAddHandler() {} - - @Override - protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { - for (AttributeDefinition attrib : RealmDefinition.ALL_ATTRIBUTES) { - attrib.validateAndSet(operation, model); - } - - if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(model.clone())) { - //TODO: externalize message - throw new OperationFailedException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); - } - } - - @Override - 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-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmDefinition.java deleted file mode 100755 index fe3a049ea5..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmDefinition.java +++ /dev/null @@ -1,87 +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.server.extension; - -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; -import org.jboss.as.controller.registry.ManagementResourceRegistration; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Defines attributes and operations for the Realm - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -class RealmDefinition extends SimpleResourceDefinition { - - public static final String TAG_NAME = "realm"; - - - protected static final List REALM_ONLY_ATTRIBUTES = new ArrayList(); - static { - } - - protected static final List ALL_ATTRIBUTES = new ArrayList(); - static { - ALL_ATTRIBUTES.addAll(REALM_ONLY_ATTRIBUTES); - ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); - } - - private static final Map DEFINITION_LOOKUP = new HashMap(); - static { - for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { - DEFINITION_LOOKUP.put(def.getXmlName(), def); - } - } - - private static final RealmWriteAttributeHandler realmAttrHandler = new RealmWriteAttributeHandler(ALL_ATTRIBUTES.toArray(new SimpleAttributeDefinition[0])); - - public RealmDefinition() { - super(PathElement.pathElement("realm"), - KeycloakExtension.getResourceDescriptionResolver("realm"), - RealmAddHandler.INSTANCE, - RealmRemoveHandler.INSTANCE); - } - - @Override - public void registerOperations(ManagementResourceRegistration resourceRegistration) { - super.registerOperations(resourceRegistration); - resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); - } - - @Override - public void registerAttributes(ManagementResourceRegistration resourceRegistration) { - super.registerAttributes(resourceRegistration); - - for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { - //TODO: use subclass of realmAttrHandler that can call RealmDefinition.validateTruststoreSetIfRequired - resourceRegistration.registerReadWriteAttribute(attrDef, null, realmAttrHandler); - } - } - - - public static SimpleAttributeDefinition lookup(String name) { - return DEFINITION_LOOKUP.get(name); - } -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java deleted file mode 100644 index 5715fa1641..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmRemoveHandler.java +++ /dev/null @@ -1,41 +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.server.extension; - -import org.jboss.as.controller.AbstractRemoveStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Remove a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -final class RealmRemoveHandler extends AbstractRemoveStepHandler { - - public static RealmRemoveHandler INSTANCE = new RealmRemoveHandler(); - - private RealmRemoveHandler() {} - - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.removeRealm(operation); - } -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java deleted file mode 100755 index 42dc858d10..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/RealmWriteAttributeHandler.java +++ /dev/null @@ -1,60 +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.server.extension; - -import org.jboss.as.controller.AbstractWriteAttributeHandler; -import org.jboss.as.controller.AttributeDefinition; -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. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { - - public RealmWriteAttributeHandler(List definitions) { - this(definitions.toArray(new AttributeDefinition[definitions.size()])); - } - - public RealmWriteAttributeHandler(AttributeDefinition... definitions) { - super(definitions); - } - - @Override - protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.updateRealm(operation, attributeName, resolvedValue); - - hh.setHandback(ckService); - - return false; - } - - @Override - protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { - ckService.updateRealm(operation, attributeName, valueToRestore); - } - -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java deleted file mode 100755 index 5703f68b30..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentAddHandler.java +++ /dev/null @@ -1,43 +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.server.extension; - -import org.jboss.as.controller.AbstractAddStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Add a deployment to a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -final class SecureDeploymentAddHandler extends AbstractAddStepHandler { - - public static SecureDeploymentAddHandler INSTANCE = new SecureDeploymentAddHandler(); - - private SecureDeploymentAddHandler() { - super(SecureDeploymentDefinition.ALL_ATTRIBUTES); - } - - @Override - 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-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentDefinition.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentDefinition.java deleted file mode 100755 index 5c349caa64..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentDefinition.java +++ /dev/null @@ -1,130 +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.server.extension; - -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; -import org.jboss.as.controller.operations.validation.StringLengthValidator; -import org.jboss.as.controller.registry.ManagementResourceRegistration; -import org.jboss.dmr.ModelNode; -import org.jboss.dmr.ModelType; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Defines attributes and operations for a secure-deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -class SecureDeploymentDefinition extends SimpleResourceDefinition { - - public static final String TAG_NAME = "secure-deployment"; - - protected static final SimpleAttributeDefinition REALM = - new SimpleAttributeDefinitionBuilder("realm", ModelType.STRING, true) - .setXmlName("realm") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition RESOURCE = - new SimpleAttributeDefinitionBuilder("resource", ModelType.STRING, true) - .setXmlName("resource") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition USE_RESOURCE_ROLE_MAPPINGS = - new SimpleAttributeDefinitionBuilder("use-resource-role-mappings", ModelType.BOOLEAN, true) - .setXmlName("use-resource-role-mappings") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition BEARER_ONLY = - new SimpleAttributeDefinitionBuilder("bearer-only", ModelType.BOOLEAN, true) - .setXmlName("bearer-only") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition ENABLE_BASIC_AUTH = - new SimpleAttributeDefinitionBuilder("enable-basic-auth", ModelType.BOOLEAN, true) - .setXmlName("enable-basic-auth") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition PUBLIC_CLIENT = - new SimpleAttributeDefinitionBuilder("public-client", ModelType.BOOLEAN, true) - .setXmlName("public-client") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - - protected static final List DEPLOYMENT_ONLY_ATTRIBUTES = new ArrayList(); - static { - DEPLOYMENT_ONLY_ATTRIBUTES.add(REALM); - DEPLOYMENT_ONLY_ATTRIBUTES.add(RESOURCE); - DEPLOYMENT_ONLY_ATTRIBUTES.add(USE_RESOURCE_ROLE_MAPPINGS); - DEPLOYMENT_ONLY_ATTRIBUTES.add(BEARER_ONLY); - DEPLOYMENT_ONLY_ATTRIBUTES.add(ENABLE_BASIC_AUTH); - DEPLOYMENT_ONLY_ATTRIBUTES.add(PUBLIC_CLIENT); - } - - protected static final List ALL_ATTRIBUTES = new ArrayList(); - static { - ALL_ATTRIBUTES.addAll(DEPLOYMENT_ONLY_ATTRIBUTES); - ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); - } - - private static final Map DEFINITION_LOOKUP = new HashMap(); - static { - for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { - DEFINITION_LOOKUP.put(def.getXmlName(), def); - } - } - - private static SecureDeploymentWriteAttributeHandler attrHandler = new SecureDeploymentWriteAttributeHandler(ALL_ATTRIBUTES); - - public SecureDeploymentDefinition() { - super(PathElement.pathElement(TAG_NAME), - KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), - SecureDeploymentAddHandler.INSTANCE, - SecureDeploymentRemoveHandler.INSTANCE); - } - - @Override - public void registerOperations(ManagementResourceRegistration resourceRegistration) { - super.registerOperations(resourceRegistration); - resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); - } - - @Override - public void registerAttributes(ManagementResourceRegistration resourceRegistration) { - super.registerAttributes(resourceRegistration); - for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { - resourceRegistration.registerReadWriteAttribute(attrDef, null, attrHandler); - } - } - - public static SimpleAttributeDefinition lookup(String name) { - return DEFINITION_LOOKUP.get(name); - } -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java deleted file mode 100644 index dafef213f0..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentRemoveHandler.java +++ /dev/null @@ -1,41 +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.server.extension; - -import org.jboss.as.controller.AbstractRemoveStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Remove a secure-deployment from a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandler { - - public static SecureDeploymentRemoveHandler INSTANCE = new SecureDeploymentRemoveHandler(); - - private SecureDeploymentRemoveHandler() {} - - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.removeSecureDeployment(operation); - } -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java deleted file mode 100755 index df5c9d235a..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SecureDeploymentWriteAttributeHandler.java +++ /dev/null @@ -1,59 +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.server.extension; - -import org.jboss.as.controller.AbstractWriteAttributeHandler; -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.dmr.ModelNode; - -import java.util.List; - -/** - * Update an attribute on a secure-deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttributeHandler { - - public SecureDeploymentWriteAttributeHandler(List definitions) { - this(definitions.toArray(new AttributeDefinition[definitions.size()])); - } - - public SecureDeploymentWriteAttributeHandler(AttributeDefinition... definitions) { - super(definitions); - } - - @Override - protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - hh.setHandback(ckService); - ckService.updateSecureDeployment(operation, attributeName, resolvedValue); - return false; - } - - @Override - protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { - ckService.updateSecureDeployment(operation, attributeName, valueToRestore); - } - -} diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SharedAttributeDefinitons.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SharedAttributeDefinitons.java deleted file mode 100755 index eaec56dc12..0000000000 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/SharedAttributeDefinitons.java +++ /dev/null @@ -1,227 +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.server.extension; - -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import org.jboss.as.controller.operations.validation.IntRangeValidator; -import org.jboss.as.controller.operations.validation.StringLengthValidator; -import org.jboss.dmr.ModelNode; -import org.jboss.dmr.ModelType; - -import java.util.ArrayList; -import java.util.List; - -/** - * Defines attributes that can be present in both a realm and an application (secure-deployment). - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -class SharedAttributeDefinitons { - - protected static final SimpleAttributeDefinition REALM_PUBLIC_KEY = - new SimpleAttributeDefinitionBuilder("realm-public-key", ModelType.STRING, true) - .setXmlName("realm-public-key") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition AUTH_SERVER_URL = - new SimpleAttributeDefinitionBuilder("auth-server-url", ModelType.STRING, true) - .setXmlName("auth-server-url") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition SSL_REQUIRED = - new SimpleAttributeDefinitionBuilder("ssl-required", ModelType.STRING, true) - .setXmlName("ssl-required") - .setAllowExpression(true) - .setDefaultValue(new ModelNode("external")) - .build(); - protected static final SimpleAttributeDefinition ALLOW_ANY_HOSTNAME = - new SimpleAttributeDefinitionBuilder("allow-any-hostname", ModelType.BOOLEAN, true) - .setXmlName("allow-any-hostname") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition DISABLE_TRUST_MANAGER = - new SimpleAttributeDefinitionBuilder("disable-trust-manager", ModelType.BOOLEAN, true) - .setXmlName("disable-trust-manager") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition TRUSTSTORE = - new SimpleAttributeDefinitionBuilder("truststore", ModelType.STRING, true) - .setXmlName("truststore") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition TRUSTSTORE_PASSWORD = - new SimpleAttributeDefinitionBuilder("truststore-password", ModelType.STRING, true) - .setXmlName("truststore-password") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CONNECTION_POOL_SIZE = - new SimpleAttributeDefinitionBuilder("connection-pool-size", ModelType.INT, true) - .setXmlName("connection-pool-size") - .setAllowExpression(true) - .setValidator(new IntRangeValidator(0, true)) - .build(); - - protected static final SimpleAttributeDefinition ENABLE_CORS = - new SimpleAttributeDefinitionBuilder("enable-cors", ModelType.BOOLEAN, true) - .setXmlName("enable-cors") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition CLIENT_KEYSTORE = - new SimpleAttributeDefinitionBuilder("client-keystore", ModelType.STRING, true) - .setXmlName("client-keystore") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CLIENT_KEYSTORE_PASSWORD = - new SimpleAttributeDefinitionBuilder("client-keystore-password", ModelType.STRING, true) - .setXmlName("client-keystore-password") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CLIENT_KEY_PASSWORD = - new SimpleAttributeDefinitionBuilder("client-key-password", ModelType.STRING, true) - .setXmlName("client-key-password") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CORS_MAX_AGE = - new SimpleAttributeDefinitionBuilder("cors-max-age", ModelType.INT, true) - .setXmlName("cors-max-age") - .setAllowExpression(true) - .setValidator(new IntRangeValidator(-1, true)) - .build(); - protected static final SimpleAttributeDefinition CORS_ALLOWED_HEADERS = - new SimpleAttributeDefinitionBuilder("cors-allowed-headers", ModelType.STRING, true) - .setXmlName("cors-allowed-headers") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CORS_ALLOWED_METHODS = - new SimpleAttributeDefinitionBuilder("cors-allowed-methods", ModelType.STRING, true) - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition EXPOSE_TOKEN = - new SimpleAttributeDefinitionBuilder("expose-token", ModelType.BOOLEAN, true) - .setXmlName("expose-token") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition AUTH_SERVER_URL_FOR_BACKEND_REQUESTS = - new SimpleAttributeDefinitionBuilder("auth-server-url-for-backend-requests", ModelType.STRING, true) - .setXmlName("auth-server-url-for-backend-requests") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition ALWAYS_REFRESH_TOKEN = - new SimpleAttributeDefinitionBuilder("always-refresh-token", ModelType.BOOLEAN, true) - .setXmlName("always-refresh-token") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition REGISTER_NODE_AT_STARTUP = - new SimpleAttributeDefinitionBuilder("register-node-at-startup", ModelType.BOOLEAN, true) - .setXmlName("register-node-at-startup") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition REGISTER_NODE_PERIOD = - new SimpleAttributeDefinitionBuilder("register-node-period", ModelType.INT, true) - .setXmlName("register-node-period") - .setAllowExpression(true) - .setValidator(new IntRangeValidator(-1, true)) - .build(); - protected static final SimpleAttributeDefinition TOKEN_STORE = - new SimpleAttributeDefinitionBuilder("token-store", ModelType.STRING, true) - .setXmlName("token-store") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition PRINCIPAL_ATTRIBUTE = - new SimpleAttributeDefinitionBuilder("principal-attribute", ModelType.STRING, true) - .setXmlName("principal-attribute") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - - - - protected static final List ATTRIBUTES = new ArrayList(); - static { - ATTRIBUTES.add(REALM_PUBLIC_KEY); - ATTRIBUTES.add(AUTH_SERVER_URL); - ATTRIBUTES.add(TRUSTSTORE); - ATTRIBUTES.add(TRUSTSTORE_PASSWORD); - ATTRIBUTES.add(SSL_REQUIRED); - ATTRIBUTES.add(ALLOW_ANY_HOSTNAME); - ATTRIBUTES.add(DISABLE_TRUST_MANAGER); - ATTRIBUTES.add(CONNECTION_POOL_SIZE); - ATTRIBUTES.add(ENABLE_CORS); - ATTRIBUTES.add(CLIENT_KEYSTORE); - ATTRIBUTES.add(CLIENT_KEYSTORE_PASSWORD); - ATTRIBUTES.add(CLIENT_KEY_PASSWORD); - ATTRIBUTES.add(CORS_MAX_AGE); - ATTRIBUTES.add(CORS_ALLOWED_HEADERS); - ATTRIBUTES.add(CORS_ALLOWED_METHODS); - ATTRIBUTES.add(EXPOSE_TOKEN); - ATTRIBUTES.add(AUTH_SERVER_URL_FOR_BACKEND_REQUESTS); - ATTRIBUTES.add(ALWAYS_REFRESH_TOKEN); - ATTRIBUTES.add(REGISTER_NODE_AT_STARTUP); - ATTRIBUTES.add(REGISTER_NODE_PERIOD); - ATTRIBUTES.add(TOKEN_STORE); - ATTRIBUTES.add(PRINCIPAL_ATTRIBUTE); - } - - /** - * truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false. - * - * @param attributes The full set of attributes. - * - * @return true if the attributes are valid, false otherwise. - */ - public static boolean validateTruststoreSetIfRequired(ModelNode attributes) { - if (isSet(attributes, DISABLE_TRUST_MANAGER)) { - return true; - } - - if (isSet(attributes, SSL_REQUIRED) && attributes.get(SSL_REQUIRED.getName()).asString().equals("none")) { - return true; - } - //TODO, look into alternatives & requires properties on AttributeDefinition - return isSet(attributes, TRUSTSTORE) && isSet(attributes, TRUSTSTORE_PASSWORD); - } - - private static boolean isSet(ModelNode attributes, SimpleAttributeDefinition def) { - ModelNode attribute = attributes.get(def.getName()); - - if (def.getType() == ModelType.BOOLEAN) { - return attribute.isDefined() && attribute.asBoolean(); - } - - return attribute.isDefined() && !attribute.asString().isEmpty(); - } - - -} diff --git a/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml b/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml deleted file mode 100644 index 904df4e08a..0000000000 --- a/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - org.keycloak.keycloak-server-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-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java deleted file mode 100755 index a658986f83..0000000000 --- a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/RealmDefinitionTestCase.java +++ /dev/null @@ -1,89 +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.server.extension; - - -import org.jboss.dmr.ModelNode; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.keycloak.subsystem.server.extension.SharedAttributeDefinitons; - - -/** - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class RealmDefinitionTestCase { - - private ModelNode model; - - @Before - public void setUp() { - model = new ModelNode(); - model.get("realm").set("demo"); - model.get("resource").set("customer-portal"); - model.get("realm-public-key").set("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); - model.get("auth-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/login"); - model.get("code-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/access/codes"); - model.get("expose-token").set(true); - ModelNode credential = new ModelNode(); - credential.get("password").set("password"); - model.get("credentials").set(credential); - } - - @Test - public void testIsTruststoreSetIfRequired() throws Exception { - model.get("ssl-required").set("none"); - model.get("disable-trust-manager").set(true); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("none"); - model.get("disable-trust-manager").set(false); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(true); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(false); - Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("external"); - model.get("disable-trust-manager").set(false); - Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(false); - model.get("truststore").set("foo"); - Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(false); - model.get("truststore").set("foo"); - model.get("truststore-password").set("password"); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("external"); - model.get("disable-trust-manager").set(false); - model.get("truststore").set("foo"); - model.get("truststore-password").set("password"); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - } - -} diff --git a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java index e178561fb9..86207dfc7f 100755 --- a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java @@ -22,7 +22,6 @@ import java.io.IOException; import org.jboss.as.subsystem.test.AbstractSubsystemBaseTest; import org.jboss.dmr.ModelNode; import org.junit.Test; -import org.keycloak.subsystem.server.extension.KeycloakExtension; /** @@ -67,11 +66,4 @@ public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { protected String getSubsystemXsdPath() throws Exception { return "schema/wildfly-keycloak_1_0.xsd"; } - - @Override - protected String[] getSubsystemTemplatePaths() throws IOException { - return new String[]{ - "/subsystem-templates/keycloak.xml" - }; - } } diff --git a/pom.xml b/pom.xml index b223431d03..3bb2c47211 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.jboss jboss-parent - 14 + 16 Keycloak @@ -58,7 +58,7 @@ 4.2.0 3.1.2 2.10 - 4.11 + 4.12 1.3 1.2.17 1.3.1b @@ -481,7 +481,7 @@ org.wildfly - wildfly-undertow + wildfly-web-common ${wildfly.version} From 666e6103342bb5335a3bfcf7926313a867858dea Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Wed, 29 Apr 2015 16:55:39 +0200 Subject: [PATCH 05/22] Upgrade WildFly to 9.0.0.RC1-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3bb2c47211..6e2293c474 100755 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ 5.1.25 1.5.10 7.1.1.Final - 8.2.0.Final + 9.0.0.CR1-SNAPSHOT 1.0.0.Beta3 1.0.2.Final 2.2 From 03fa58a2712f4a18463d6b9837f1545aa111c9c3 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Wed, 29 Apr 2015 17:05:24 +0200 Subject: [PATCH 06/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - POM dependencies cleanup --- integration/keycloak-adapter-subsystem/pom.xml | 17 ----------------- integration/keycloak-server-subsystem/pom.xml | 13 +------------ pom.xml | 6 ++++++ 3 files changed, 7 insertions(+), 29 deletions(-) diff --git a/integration/keycloak-adapter-subsystem/pom.xml b/integration/keycloak-adapter-subsystem/pom.xml index eb1d7c9797..cd8be445ef 100755 --- a/integration/keycloak-adapter-subsystem/pom.xml +++ b/integration/keycloak-adapter-subsystem/pom.xml @@ -62,22 +62,6 @@ wildfly-server provided - - - org.jboss.metadata - jboss-metadata-common - 8.1.2.Final - provided - org.wildfly wildfly-web-common @@ -106,7 +90,6 @@ org.wildfly.core wildfly-subsystem-test-framework test - 1.0.0.Beta3 junit diff --git a/integration/keycloak-server-subsystem/pom.xml b/integration/keycloak-server-subsystem/pom.xml index c58bdd4cee..cb09739ed6 100755 --- a/integration/keycloak-server-subsystem/pom.xml +++ b/integration/keycloak-server-subsystem/pom.xml @@ -62,16 +62,6 @@ wildfly-server provided - - org.wildfly.core - wildfly-version - provided - - - org.wildfly - wildfly-ee - provided - org.wildfly wildfly-web-common @@ -98,8 +88,7 @@ org.wildfly.core - wildfly-subsystem-test - pom + wildfly-subsystem-test-framework test diff --git a/pom.xml b/pom.xml index 6e2293c474..341bfc8519 100755 --- a/pom.xml +++ b/pom.xml @@ -462,6 +462,12 @@ pom test + + org.wildfly.core + wildfly-subsystem-test-framework + ${wildfly.core.version} + test + org.wildfly.core wildfly-core-feature-pack From 87cb28eaabd4c425db9a5f233f9a9354ddeaa0e6 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Wed, 29 Apr 2015 18:07:12 +0200 Subject: [PATCH 07/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Fix server-subsystem tests --- .../schema/wildfly-keycloak-server_1_1.xsd | 81 ++----------------- .../extension/SubsystemParsingTestCase.java | 16 +--- .../server/extension/keycloak-server-1.1.xml | 6 ++ 3 files changed, 17 insertions(+), 86 deletions(-) create mode 100644 integration/keycloak-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml diff --git a/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd b/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd index 978dc02506..a8dd28e5a4 100755 --- a/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd +++ b/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd @@ -14,92 +14,25 @@ - - + - + - - - - - - - - - - - - - - - - - - - - - - + + - The name of the realm. + The name of the war archive containing the Keycloak server web application. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The name of the realm. - - - - - - - - - - - + diff --git a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java index 86207dfc7f..af741a7d83 100755 --- a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java @@ -43,27 +43,19 @@ public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { @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); + 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-1.0.xml"); + return readResource("keycloak-server-1.1.xml"); } @Override protected String getSubsystemXsdPath() throws Exception { - return "schema/wildfly-keycloak_1_0.xsd"; + return "schema/wildfly-keycloak-server_1_1.xsd"; } } diff --git a/integration/keycloak-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml b/integration/keycloak-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/keycloak-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 From a50c0e61e4c6ce0b76d0a5ebf0bb8a805d9bab30 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Thu, 30 Apr 2015 14:38:53 +0200 Subject: [PATCH 08/22] Fix missing wildfly-undertow version --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index 341bfc8519..140145b299 100755 --- a/pom.xml +++ b/pom.xml @@ -462,6 +462,12 @@ pom test + + org.wildfly + wildfly-undertow + ${wildfly.version} + test + org.wildfly.core wildfly-subsystem-test-framework From 3a7bba041f217babde989fa8dfb99655d404a5c1 Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Fri, 24 Apr 2015 20:17:58 -0400 Subject: [PATCH 09/22] Create builds based on WildFly 9 feature packs. --- .../adapter-only-build/assembly.xml | 36 ++++ .../adapter-only/adapter-only-build/pom.xml | 89 +++++++++ .../server-provisioning.xml | 25 +++ .../adapter-only-dist/assembly.xml | 36 ++++ .../adapter-only/adapter-only-dist/pom.xml | 96 +++++++++ .../adapter-only-dist/server-provisioning.xml | 25 +++ .../feature-pack-adapter/assembly.xml | 39 ++++ .../feature-pack-build.xml | 36 ++++ .../adapter-only/feature-pack-adapter/pom.xml | 177 +++++++++++++++++ .../configuration/domain/subsystems.xml | 15 ++ .../configuration/domain/template.xml | 85 ++++++++ .../configuration/standalone/subsystems.xml | 17 ++ .../configuration/standalone/template.xml | 81 ++++++++ .../base/com/github/relaxng/main/module.xml | 37 ++++ .../base/com/sun/istack/main/module.xml | 40 ++++ .../base/com/sun/xml/bind/main/module.xml | 47 +++++ .../base/com/sun/xml/txw2/main/module.xml | 38 ++++ .../layers/base/com/sun/xsom/main/module.xml | 39 ++++ .../layers/base/io/netty/main/module.xml | 35 ++++ .../base/javax/xml/bind/api/main/module.xml | 38 ++++ .../base/net/iharder/base64/main/module.xml | 13 ++ .../org/apache/commons/codec/main/module.xml | 36 ++++ .../apache/commons/logging/main/module.xml | 25 +++ .../org/apache/httpcomponents/main/module.xml | 42 ++++ .../org/apache/james/mime4j/main/module.xml | 38 ++++ .../base/org/bouncycastle/main/module.xml | 34 ++++ .../jackson/jackson-core-asl/main/module.xml | 36 ++++ .../jackson-mapper-asl/main/module.xml | 38 ++++ .../jackson/jackson-xc/main/module.xml | 40 ++++ .../netty-xnio-transport/main/module.xml | 39 ++++ .../layers/base/org/joda/time/main/module.xml | 34 ++++ .../keycloak-adapter-core/main/module.xml | 20 ++ .../main/module.xml | 47 +++++ .../keycloak/keycloak-core/main/module.xml | 21 ++ .../main/module.xml | 17 ++ .../keycloak-undertow-adapter/main/module.xml | 25 +++ .../keycloak-wildfly-adapter/main/module.xml | 27 +++ .../org/slf4j/jcl-over-slf4j/main/module.xml | 33 ++++ .../feature-pack-builds/adapter-only/pom.xml | 21 ++ distribution/feature-pack-builds/pom.xml | 21 ++ .../server-and-adapter/pom.xml | 20 ++ .../server-and-adapter-build/assembly.xml | 36 ++++ .../server-and-adapter-build/pom.xml | 94 +++++++++ .../server-provisioning.xml | 23 +++ .../server-and-adapter-dist/assembly.xml | 36 ++++ .../server-and-adapter-dist/pom.xml | 102 ++++++++++ .../server-provisioning.xml | 23 +++ .../feature-pack-server/assembly.xml | 53 +++++ .../feature-pack-build.xml | 39 ++++ .../server-only/feature-pack-server/pom.xml | 150 ++++++++++++++ .../configuration/domain/subsystems.xml | 138 +++++++++++++ .../configuration/domain/template.xml | 88 +++++++++ .../configuration/standalone/subsystems.xml | 35 ++++ .../configuration/standalone/template.xml | 87 ++++++++ .../configuration/keycloak-server.json | 72 +++++++ .../com/google/zxing/core/main/module.xml | 13 ++ .../com/google/zxing/javase/main/module.xml | 14 ++ .../base/de/idyl/winzipaes/main/module.xml | 13 ++ .../base/net/iharder/base64/main/module.xml | 13 ++ .../base/org/freemarker/main/module.xml | 14 ++ .../keycloak-account-api/main/module.xml | 18 ++ .../main/module.xml | 24 +++ .../keycloak-adapter-core/main/module.xml | 20 ++ .../keycloak-broker-core/main/module.xml | 17 ++ .../keycloak-broker-oidc/main/module.xml | 22 +++ .../keycloak-broker-saml/main/module.xml | 19 ++ .../keycloak-connections-file/main/module.xml | 19 ++ .../main/module.xml | 17 ++ .../main/module.xml | 20 ++ .../keycloak-connections-jpa/main/module.xml | 23 +++ .../main/module.xml | 18 ++ .../main/module.xml | 17 ++ .../keycloak-core-jaxrs/main/module.xml | 20 ++ .../keycloak/keycloak-core/main/module.xml | 21 ++ .../keycloak-email-api/main/module.xml | 17 ++ .../keycloak-email-freemarker/main/module.xml | 24 +++ .../keycloak-events-api/main/module.xml | 16 ++ .../keycloak-events-email/main/module.xml | 19 ++ .../main/module.xml | 18 ++ .../keycloak-events-jpa/main/module.xml | 24 +++ .../keycloak-events-mongo/main/module.xml | 22 +++ .../main/module.xml | 24 +++ .../main/module.xml | 25 +++ .../main/module.xml | 25 +++ .../main/module.xml | 26 +++ .../main/module.xml | 18 ++ .../main/module.xml | 19 ++ .../main/module.xml | 19 ++ .../main/module.xml | 20 ++ .../main/module.xml | 17 ++ .../keycloak-js-adapter/main/module.xml | 12 ++ .../main/module.xml | 19 ++ .../keycloak-ldap-federation/main/module.xml | 19 ++ .../keycloak-login-api/main/module.xml | 18 ++ .../keycloak-login-freemarker/main/module.xml | 26 +++ .../keycloak-model-api/main/module.xml | 17 ++ .../keycloak-model-file/main/module.xml | 17 ++ .../keycloak-model-jpa/main/module.xml | 22 +++ .../keycloak-model-mongo/main/module.xml | 19 ++ .../main/module.xml | 18 ++ .../main/module.xml | 20 ++ .../main/module.xml | 16 ++ .../main/module.xml | 18 ++ .../keycloak-saml-core/main/module.xml | 19 ++ .../keycloak-saml-protocol/main/module.xml | 29 +++ .../keycloak-server-subsystem/main/module.xml | 52 +++++ .../keycloak/keycloak-server/main/module.xml | 61 ++++++ .../keycloak-services/main/module.xml | 84 ++++++++ .../keycloak-social-core/main/module.xml | 20 ++ .../keycloak-social-facebook/main/module.xml | 22 +++ .../keycloak-social-github/main/module.xml | 22 +++ .../keycloak-social-google/main/module.xml | 22 +++ .../keycloak-social-linkedin/main/module.xml | 22 +++ .../main/module.xml | 22 +++ .../keycloak-social-twitter/main/module.xml | 25 +++ .../keycloak-timer-api/main/module.xml | 16 ++ .../keycloak-timer-basic/main/module.xml | 17 ++ .../keycloak-undertow-adapter/main/module.xml | 25 +++ .../keycloak-wildfly-adapter/main/module.xml | 27 +++ .../main/module.xml | 15 ++ .../layers/base/org/liquibase/main/module.xml | 14 ++ .../mongodb/mongo-java-driver/main/module.xml | 13 ++ .../layers/base/org/twitter4j/main/module.xml | 13 ++ .../feature-pack-builds/server-only/pom.xml | 21 ++ .../server-only-build/assembly.xml | 36 ++++ .../server-only/server-only-build/pom.xml | 88 +++++++++ .../server-only-build/server-provisioning.xml | 22 +++ .../server-only/server-only-dist/assembly.xml | 36 ++++ .../server-only/server-only-dist/pom.xml | 96 +++++++++ .../server-only-dist/server-provisioning.xml | 22 +++ distribution/pom.xml | 1 + .../subsystem-templates/keycloak-adapter.xml | 7 + .../subsystem-templates/keycloak.xml | 34 ---- .../extension/authserver/AuthServerUtil.java | 4 +- .../keycloak-datasources.xml | 30 +++ .../subsystem-templates/keycloak-server.xml | 11 ++ pom.xml | 187 +++++++++++++++++- 137 files changed, 4646 insertions(+), 39 deletions(-) create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-only-build/server-provisioning.xml create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-only-dist/assembly.xml create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-only-dist/server-provisioning.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/assembly.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/feature-pack-build.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/subsystems.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/template.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/subsystems.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/template.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/io/netty/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml create mode 100644 distribution/feature-pack-builds/adapter-only/pom.xml create mode 100644 distribution/feature-pack-builds/pom.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/pom.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/assembly.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/pom.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/server-provisioning.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/assembly.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/pom.xml create mode 100644 distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/server-provisioning.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/assembly.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/feature-pack-build.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/subsystems.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/template.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/subsystems.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/template.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/content/standalone/configuration/keycloak-server.json create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml create mode 100644 distribution/feature-pack-builds/server-only/pom.xml create mode 100644 distribution/feature-pack-builds/server-only/server-only-build/assembly.xml create mode 100644 distribution/feature-pack-builds/server-only/server-only-build/pom.xml create mode 100644 distribution/feature-pack-builds/server-only/server-only-build/server-provisioning.xml create mode 100644 distribution/feature-pack-builds/server-only/server-only-dist/assembly.xml create mode 100644 distribution/feature-pack-builds/server-only/server-only-dist/pom.xml create mode 100644 distribution/feature-pack-builds/server-only/server-only-dist/server-provisioning.xml create mode 100644 integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml delete mode 100644 integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml create mode 100644 integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml create mode 100644 integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml 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..7f68478719 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml @@ -0,0 +1,36 @@ + + + + + thin-server + + zip + + false + + + target + + + ${project.artifactId}-${project.version}/** + + + + 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..27d01661a1 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml @@ -0,0 +1,89 @@ + + + + org.keycloak + adapter-only-builds + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + adapter-only-build + + Keycloak WildFly Build: Adapter Only + pom + + + + org.keycloak + feature-pack-adapter + ${project.version} + zip + + + + + ${project.artifactId}-${project.version} + + + 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.artifactId}-${project.version} + 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..935ce4a256 --- /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..6f3bb1d165 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml @@ -0,0 +1,96 @@ + + + + org.keycloak + adapter-only-builds + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + adapter-only-dist + + Keycloak WildFly Dist: Adapter Only + pom + + + + org.keycloak + feature-pack-adapter + ${project.version} + zip + + + + + ${project.artifactId}-${project.version} + + + + + 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..58cf13c659 --- /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/feature-pack-adapter/assembly.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/assembly.xml new file mode 100644 index 0000000000..8909ddd623 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/assembly.xml @@ -0,0 +1,39 @@ + + + + + feature-pack + + zip + + false + + + target/keycloak-feature-pack-adapter-${project.version} + + + + diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/feature-pack-build.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/feature-pack-build.xml new file mode 100644 index 0000000000..e55c8d94bf --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/feature-pack-build.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml new file mode 100644 index 0000000000..aebb7c652a --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml @@ -0,0 +1,177 @@ + + + + org.keycloak + adapter-only-builds + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + feature-pack-adapter + + 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-adapter-subsystem + + + org.keycloak + keycloak-undertow-adapter + + + org.slf4j + jcl-over-slf4j + + + org.wildfly + wildfly-web-feature-pack + zip + + + + + keycloak-feature-pack-adapter-${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 + keycloak-feature-pack-adapter-${project.version} + false + target/ + target/assembly/work + gnu + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/subsystems.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/subsystems.xml new file mode 100644 index 0000000000..3bff333a15 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/configuration/domain/template.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/template.xml new file mode 100644 index 0000000000..33a0ac7a10 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/template.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/subsystems.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/subsystems.xml new file mode 100644 index 0000000000..765f01846c --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/configuration/standalone/template.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/template.xml new file mode 100644 index 0000000000..d0a8130109 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/template.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/io/netty/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml new file mode 100644 index 0000000000..9d90a27a28 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml new file mode 100644 index 0000000000..39fb66d2b3 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml b/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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/feature-pack-adapter/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/pom.xml b/distribution/feature-pack-builds/adapter-only/pom.xml new file mode 100644 index 0000000000..525db204f2 --- /dev/null +++ b/distribution/feature-pack-builds/adapter-only/pom.xml @@ -0,0 +1,21 @@ + + + feature-pack-builds + org.keycloak + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + Adapter Only Builds + + 4.0.0 + + adapter-only-builds + pom + + + feature-pack-adapter + 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..3fb1c74b50 --- /dev/null +++ b/distribution/feature-pack-builds/pom.xml @@ -0,0 +1,21 @@ + + + distribution-pom + org.keycloak + 1.2.0.RC1-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..a7d021349e --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/pom.xml @@ -0,0 +1,20 @@ + + + feature-pack-builds + org.keycloak + 1.2.0.RC1-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..4d44c6a55c --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-build/pom.xml @@ -0,0 +1,94 @@ + + + + org.keycloak + server-and-adapter + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + server-and-adapter-build + + Keycloak WildFly Build: Server and Adapter + pom + + + + org.keycloak + feature-pack-server + ${project.version} + zip + + + org.keycloak + feature-pack-adapter + ${project.version} + zip + + + + + ${project.artifactId}-${project.version} + + + 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..ca45007a0f --- /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..1d2a520749 --- /dev/null +++ b/distribution/feature-pack-builds/server-and-adapter/server-and-adapter-dist/pom.xml @@ -0,0 +1,102 @@ + + + + org.keycloak + server-and-adapter + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + server-and-adapter-dist + + Keycloak WildFly Dist: Server and Adapter + pom + + + + org.keycloak + feature-pack-server + ${project.version} + zip + + + org.keycloak + feature-pack-adapter + ${project.version} + zip + + + + + ${project.artifactId}-${project.version} + + + + + 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..e97a707cce --- /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/feature-pack-server/assembly.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/assembly.xml new file mode 100644 index 0000000000..eaee2caa59 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/feature-pack-build.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/feature-pack-build.xml new file mode 100644 index 0000000000..8737c28576 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/feature-pack-build.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml new file mode 100644 index 0000000000..5369aaec0b --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml @@ -0,0 +1,150 @@ + + + + org.keycloak + server-only-builds + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + feature-pack-server + + Keycloak Feature Pack: Server + pom + + + + org.keycloak + keycloak-dependencies-server-all + ${project.version} + pom + + + org.keycloak + keycloak-server + ${project.version} + war + + + org.keycloak + keycloak-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} + + + + + keycloak-feature-pack-server-${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/feature-pack-server/src/main/resources/configuration/domain/subsystems.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/subsystems.xml new file mode 100644 index 0000000000..2dde48f173 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/src/main/resources/configuration/domain/template.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/template.xml new file mode 100644 index 0000000000..cf3ccccd33 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/template.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/subsystems.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/subsystems.xml new file mode 100644 index 0000000000..fad3c38b14 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/src/main/resources/configuration/standalone/template.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/template.xml new file mode 100644 index 0000000000..2260468fff --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/template.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/content/standalone/configuration/keycloak-server.json b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml new file mode 100644 index 0000000000..579ec1f491 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml new file mode 100644 index 0000000000..789c779dde --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml new file mode 100644 index 0000000000..63d8ba5cdc --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml new file mode 100644 index 0000000000..ac4f9efac8 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml new file mode 100644 index 0000000000..39fb66d2b3 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/feature-pack-server/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml b/distribution/feature-pack-builds/server-only/feature-pack-server/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/feature-pack-server/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/pom.xml b/distribution/feature-pack-builds/server-only/pom.xml new file mode 100644 index 0000000000..ec35fbe8e4 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/pom.xml @@ -0,0 +1,21 @@ + + + feature-pack-builds + org.keycloak + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + Server Only Builds + + 4.0.0 + + server-only-builds + pom + + + feature-pack-server + server-only-build + server-only-dist + + 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..fab9e1016a --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-build/pom.xml @@ -0,0 +1,88 @@ + + + + org.keycloak + server-only-builds + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + server-only-build + + Keycloak WildFly Build: Server Only + pom + + + + org.keycloak + feature-pack-server + ${project.version} + zip + + + + + ${project.artifactId}-${project.version} + + + 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..b1b7bde380 --- /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..704449a131 --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-dist/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-dist/pom.xml b/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml new file mode 100644 index 0000000000..c4c7d31cbd --- /dev/null +++ b/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml @@ -0,0 +1,96 @@ + + + + org.keycloak + server-only-builds + 1.2.0.RC1-SNAPSHOT + ../pom.xml + + 4.0.0 + + org.keycloak + server-only-dist + + Keycloak WildFly Dist: Server Only + pom + + + + org.keycloak + feature-pack-server + ${project.version} + zip + + + + + ${project.artifactId}-${project.version} + + + + + 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..cbf3dcd072 --- /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/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/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml b/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml new file mode 100644 index 0000000000..a2187f6e1f --- /dev/null +++ b/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml @@ -0,0 +1,7 @@ + + + + org.keycloak.keycloak-adapter-subsystem + + + diff --git a/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml b/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml deleted file mode 100644 index 654297a8e3..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - org.keycloak.keycloak-adapter-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-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java index 5f87253d79..6814aa7df1 100644 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java @@ -85,8 +85,8 @@ public class AuthServerUtil { private URI findAuthServerUri() throws IllegalStateException { try { - URL subsysJar = this.subsysModule.getExportedResource("keycloak-server-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(); diff --git a/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml b/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml new file mode 100644 index 0000000000..9f05130294 --- /dev/null +++ b/integration/keycloak-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/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml b/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml new file mode 100644 index 0000000000..7f66f74965 --- /dev/null +++ b/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml @@ -0,0 +1,11 @@ + + + + org.keycloak.keycloak-server-subsystem + + + true + auth + + + diff --git a/pom.xml b/pom.xml index 140145b299..9819d9fb37 100755 --- a/pom.xml +++ b/pom.xml @@ -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,23 @@ 1.6.1 1.4.01 5.1.25 - 1.5.10 + 1.7.7.jbossorg-1 7.1.1.Final 9.0.0.CR1-SNAPSHOT 1.0.0.Beta3 + 9.0.0.CR1-SNAPSHOT + 1.0.0.Alpha8 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 @@ -140,6 +154,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 +216,7 @@ org.bouncycastle - bcpkix-jdk15on + bcpkix-jdk15on ${bouncycastle.crypto.version} @@ -197,6 +266,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-adapter-subsystem + ${project.version} + + + org.keycloak + keycloak-undertow-adapter + ${project.version} + io.undertow undertow-servlet @@ -418,7 +512,12 @@ ${slf4j.version} test - + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + mysql mysql-connector-java @@ -440,6 +539,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 +576,18 @@ wildfly-ee ${wildfly.version} + + org.wildfly + wildfly-feature-pack + ${wildfly9.version} + zip + + + org.wildfly + wildfly-web-feature-pack + ${wildfly9.version} + zip + org.wildfly.core wildfly-subsystem-test @@ -1110,6 +1243,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} + From f0dab97b804bc6a755fc9ebd135f7effe7425a00 Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Mon, 27 Apr 2015 08:15:29 -0400 Subject: [PATCH 10/22] Add README file. --- distribution/feature-pack-builds/README.md | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 distribution/feature-pack-builds/README.md diff --git a/distribution/feature-pack-builds/README.md b/distribution/feature-pack-builds/README.md new file mode 100644 index 0000000000..dfc27ccf08 --- /dev/null +++ b/distribution/feature-pack-builds/README.md @@ -0,0 +1,33 @@ +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. + +Combinations Created +-------------------- +Under + + +Building +-------- + + + + +Documentation +------------- + +* [User Guide, Admin REST API and Javadocs](http://keycloak.jboss.org/docs) +* Developer documentation + * [Hacking on Keycloak](misc/HackingOnKeycloak.md) - how to become a Keycloak contributor + * [Testsuite](misc/Testsuite.md) - details about testsuite, but also how to quickly run Keycloak during development and a few test tools (OTP generation, LDAP server, Mail server) + * [Database Testing](misc/DatabaseTesting.md) - how to do testing of Keycloak on different databases + * [Updating Database](misc/UpdatingDatabaseSchema.md) - how to change the Keycloak database + * [Release Process](misc/ReleaseProcess.md) - how to release Keycloak + + +License +------- + +* [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file From a8f3756bbc1e74ca5fca49d08476192292566957 Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Mon, 27 Apr 2015 10:16:41 -0400 Subject: [PATCH 11/22] Rename feature pack artifacts. Fix empty content directory. --- .../assembly.xml | 2 +- .../feature-pack-build.xml | 0 .../pom.xml | 5 ++--- .../main/resources/configuration/domain/subsystems.xml | 0 .../main/resources/configuration/domain/template.xml | 0 .../resources/configuration/standalone/subsystems.xml | 0 .../resources/configuration/standalone/template.xml | 0 .../src/main/resources/content/README.md | 2 ++ .../layers/base/com/github/relaxng/main/module.xml | 0 .../system/layers/base/com/sun/istack/main/module.xml | 0 .../layers/base/com/sun/xml/bind/main/module.xml | 0 .../layers/base/com/sun/xml/txw2/main/module.xml | 0 .../system/layers/base/com/sun/xsom/main/module.xml | 0 .../system/layers/base/io/netty/main/module.xml | 0 .../layers/base/javax/xml/bind/api/main/module.xml | 0 .../layers/base/net/iharder/base64/main/module.xml | 0 .../base/org/apache/commons/codec/main/module.xml | 0 .../base/org/apache/commons/logging/main/module.xml | 0 .../base/org/apache/httpcomponents/main/module.xml | 0 .../base/org/apache/james/mime4j/main/module.xml | 0 .../layers/base/org/bouncycastle/main/module.xml | 0 .../codehaus/jackson/jackson-core-asl/main/module.xml | 0 .../jackson/jackson-mapper-asl/main/module.xml | 0 .../org/codehaus/jackson/jackson-xc/main/module.xml | 0 .../xnio/netty/netty-xnio-transport/main/module.xml | 0 .../system/layers/base/org/joda/time/main/module.xml | 0 .../org/keycloak/keycloak-adapter-core/main/module.xml | 0 .../keycloak-adapter-subsystem/main/module.xml | 0 .../base/org/keycloak/keycloak-core/main/module.xml | 0 .../keycloak-jboss-adapter-core/main/module.xml | 0 .../keycloak/keycloak-undertow-adapter/main/module.xml | 0 .../keycloak/keycloak-wildfly-adapter/main/module.xml | 0 .../base/org/slf4j/jcl-over-slf4j/main/module.xml | 0 .../adapter-only/adapter-only-build/assembly.xml | 2 +- .../adapter-only/adapter-only-build/pom.xml | 7 +++---- .../adapter-only-build/server-provisioning.xml | 2 +- .../adapter-only/adapter-only-dist/pom.xml | 8 ++------ .../adapter-only-dist/server-provisioning.xml | 2 +- distribution/feature-pack-builds/adapter-only/pom.xml | 2 +- .../server-and-adapter-build/pom.xml | 7 +++---- .../server-and-adapter-build/server-provisioning.xml | 4 ++-- .../server-and-adapter/server-and-adapter-dist/pom.xml | 10 +++------- .../server-and-adapter-dist/server-provisioning.xml | 4 ++-- distribution/feature-pack-builds/server-only/pom.xml | 2 +- .../assembly.xml | 0 .../feature-pack-build.xml | 0 .../pom.xml | 3 +-- .../main/resources/configuration/domain/subsystems.xml | 0 .../main/resources/configuration/domain/template.xml | 0 .../resources/configuration/standalone/subsystems.xml | 0 .../resources/configuration/standalone/template.xml | 0 .../standalone/configuration/keycloak-server.json | 0 .../layers/base/com/google/zxing/core/main/module.xml | 0 .../base/com/google/zxing/javase/main/module.xml | 0 .../layers/base/de/idyl/winzipaes/main/module.xml | 0 .../layers/base/net/iharder/base64/main/module.xml | 0 .../system/layers/base/org/freemarker/main/module.xml | 0 .../org/keycloak/keycloak-account-api/main/module.xml | 0 .../keycloak-account-freemarker/main/module.xml | 0 .../org/keycloak/keycloak-adapter-core/main/module.xml | 0 .../org/keycloak/keycloak-broker-core/main/module.xml | 0 .../org/keycloak/keycloak-broker-oidc/main/module.xml | 0 .../org/keycloak/keycloak-broker-saml/main/module.xml | 0 .../keycloak/keycloak-connections-file/main/module.xml | 0 .../keycloak-connections-infinispan/main/module.xml | 0 .../keycloak-connections-jpa-liquibase/main/module.xml | 0 .../keycloak/keycloak-connections-jpa/main/module.xml | 0 .../keycloak-connections-mongo-update/main/module.xml | 0 .../keycloak-connections-mongo/main/module.xml | 0 .../org/keycloak/keycloak-core-jaxrs/main/module.xml | 0 .../base/org/keycloak/keycloak-core/main/module.xml | 0 .../org/keycloak/keycloak-email-api/main/module.xml | 0 .../keycloak/keycloak-email-freemarker/main/module.xml | 0 .../org/keycloak/keycloak-events-api/main/module.xml | 0 .../org/keycloak/keycloak-events-email/main/module.xml | 0 .../keycloak-events-jboss-logging/main/module.xml | 0 .../org/keycloak/keycloak-events-jpa/main/module.xml | 0 .../org/keycloak/keycloak-events-mongo/main/module.xml | 0 .../keycloak-export-import-api/main/module.xml | 0 .../keycloak-export-import-dir/main/module.xml | 0 .../keycloak-export-import-single-file/main/module.xml | 0 .../keycloak-export-import-zip/main/module.xml | 0 .../keycloak-forms-common-freemarker/main/module.xml | 0 .../keycloak-forms-common-themes/main/module.xml | 0 .../main/module.xml | 0 .../keycloak-invalidation-cache-model/main/module.xml | 0 .../keycloak-jboss-adapter-core/main/module.xml | 0 .../org/keycloak/keycloak-js-adapter/main/module.xml | 0 .../keycloak-kerberos-federation/main/module.xml | 0 .../keycloak/keycloak-ldap-federation/main/module.xml | 0 .../org/keycloak/keycloak-login-api/main/module.xml | 0 .../keycloak/keycloak-login-freemarker/main/module.xml | 0 .../org/keycloak/keycloak-model-api/main/module.xml | 0 .../org/keycloak/keycloak-model-file/main/module.xml | 0 .../org/keycloak/keycloak-model-jpa/main/module.xml | 0 .../org/keycloak/keycloak-model-mongo/main/module.xml | 0 .../keycloak-model-sessions-infinispan/main/module.xml | 0 .../keycloak-model-sessions-jpa/main/module.xml | 0 .../keycloak-model-sessions-mem/main/module.xml | 0 .../keycloak-model-sessions-mongo/main/module.xml | 0 .../org/keycloak/keycloak-saml-core/main/module.xml | 0 .../keycloak/keycloak-saml-protocol/main/module.xml | 0 .../keycloak/keycloak-server-subsystem/main/module.xml | 0 .../base/org/keycloak/keycloak-server/main/module.xml | 0 .../org/keycloak/keycloak-services/main/module.xml | 0 .../org/keycloak/keycloak-social-core/main/module.xml | 0 .../keycloak/keycloak-social-facebook/main/module.xml | 0 .../keycloak/keycloak-social-github/main/module.xml | 0 .../keycloak/keycloak-social-google/main/module.xml | 0 .../keycloak/keycloak-social-linkedin/main/module.xml | 0 .../keycloak-social-stackoverflow/main/module.xml | 0 .../keycloak/keycloak-social-twitter/main/module.xml | 0 .../org/keycloak/keycloak-timer-api/main/module.xml | 0 .../org/keycloak/keycloak-timer-basic/main/module.xml | 0 .../keycloak/keycloak-undertow-adapter/main/module.xml | 0 .../keycloak/keycloak-wildfly-adapter/main/module.xml | 0 .../keycloak-wildfly-extensions/main/module.xml | 0 .../system/layers/base/org/liquibase/main/module.xml | 0 .../base/org/mongodb/mongo-java-driver/main/module.xml | 0 .../system/layers/base/org/twitter4j/main/module.xml | 0 .../server-only/server-only-build/pom.xml | 5 ++--- .../server-only-build/server-provisioning.xml | 2 +- .../server-only/server-only-dist/assembly.xml | 2 +- .../server-only/server-only-dist/pom.xml | 8 ++------ .../server-only-dist/server-provisioning.xml | 2 +- 125 files changed, 33 insertions(+), 48 deletions(-) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/assembly.xml (94%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/feature-pack-build.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/pom.xml (96%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/configuration/domain/subsystems.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/configuration/domain/template.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/configuration/standalone/subsystems.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/configuration/standalone/template.xml (100%) create mode 100644 distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/content/README.md rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/io/netty/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml (100%) rename distribution/feature-pack-builds/adapter-only/{feature-pack-adapter => adapter-feature-pack}/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/assembly.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/feature-pack-build.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/pom.xml (97%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/configuration/domain/subsystems.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/configuration/domain/template.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/configuration/standalone/subsystems.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/configuration/standalone/template.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/content/standalone/configuration/keycloak-server.json (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml (100%) rename distribution/feature-pack-builds/server-only/{feature-pack-server => server-feature-pack}/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml (100%) diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/assembly.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/assembly.xml similarity index 94% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/assembly.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/assembly.xml index 8909ddd623..526c08dcef 100644 --- a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/assembly.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/assembly.xml @@ -32,7 +32,7 @@ false - target/keycloak-feature-pack-adapter-${project.version} + target/${project.build.finalName} diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/feature-pack-build.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/feature-pack-build.xml similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/feature-pack-build.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/feature-pack-build.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml similarity index 96% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml index aebb7c652a..e63c89a8e2 100644 --- a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - feature-pack-adapter + keycloak-adapter-feature-pack Keycloak Feature Pack: Adapter pom @@ -124,7 +124,6 @@ - keycloak-feature-pack-adapter-${project.version} org.apache.maven.plugins @@ -162,7 +161,7 @@ assembly.xml true - keycloak-feature-pack-adapter-${project.version} + ${project.build.finalName} false target/ target/assembly/work diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/subsystems.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/subsystems.xml similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/subsystems.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/subsystems.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/template.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/template.xml similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/domain/template.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/domain/template.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/subsystems.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/subsystems.xml similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/subsystems.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/subsystems.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/template.xml b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/template.xml similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/configuration/standalone/template.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/configuration/standalone/template.xml 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/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/github/relaxng/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/istack/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/bind/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xml/txw2/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/com/sun/xsom/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/io/netty/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/io/netty/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/javax/xml/bind/api/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/codec/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/commons/logging/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/httpcomponents/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/apache/james/mime4j/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/bouncycastle/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-core-asl/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-mapper-asl/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/codehaus/jackson/jackson-xc/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/jboss/xnio/netty/netty-xnio-transport/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/joda/time/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-subsystem/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml diff --git a/distribution/feature-pack-builds/adapter-only/feature-pack-adapter/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 similarity index 100% rename from distribution/feature-pack-builds/adapter-only/feature-pack-adapter/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml rename to distribution/feature-pack-builds/adapter-only/adapter-feature-pack/src/main/resources/modules/system/layers/base/org/slf4j/jcl-over-slf4j/main/module.xml 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 index 7f68478719..704449a131 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/assembly.xml @@ -29,7 +29,7 @@ target - ${project.artifactId}-${project.version}/** + ${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 index 27d01661a1..9bb0bc75f5 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - adapter-only-build + keycloak-adapter-only-build Keycloak WildFly Build: Adapter Only pom @@ -34,14 +34,13 @@ org.keycloak - feature-pack-adapter + keycloak-adapter-feature-pack ${project.version} zip - ${project.artifactId}-${project.version} org.wildfly.build @@ -74,7 +73,7 @@ assembly.xml true - ${project.artifactId}-${project.version} + ${project.build.finalName} false ${project.build.directory} ${project.build.directory}/assembly/work 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 index 935ce4a256..d8b8457a46 100644 --- 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 @@ -20,6 +20,6 @@ - + \ No newline at end of file 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 index 6f3bb1d165..f03c53f56b 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - adapter-only-dist + keycloak-adapter-only-dist Keycloak WildFly Dist: Adapter Only pom @@ -34,15 +34,11 @@ org.keycloak - feature-pack-adapter + keycloak-adapter-feature-pack ${project.version} zip - - - ${project.artifactId}-${project.version} - 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 index 58cf13c659..ae103e70cd 100644 --- 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 @@ -20,6 +20,6 @@ - + \ 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 index 525db204f2..45efa4b1c3 100644 --- a/distribution/feature-pack-builds/adapter-only/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/pom.xml @@ -14,7 +14,7 @@ pom - feature-pack-adapter + adapter-feature-pack adapter-only-build adapter-only-dist 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 index 4d44c6a55c..2b81b9dc5e 100644 --- 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 @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - server-and-adapter-build + keycloak-server-and-adapter-build Keycloak WildFly Build: Server and Adapter pom @@ -34,20 +34,19 @@ org.keycloak - feature-pack-server + keycloak-server-feature-pack ${project.version} zip org.keycloak - feature-pack-adapter + keycloak-adapter-feature-pack ${project.version} zip - ${project.artifactId}-${project.version} org.wildfly.build 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 index ca45007a0f..f83f51720d 100644 --- 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 @@ -17,7 +17,7 @@ --> - - + + \ No newline at end of file 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 index 1d2a520749..f4adfd115c 100644 --- 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 @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - server-and-adapter-dist + keycloak-server-and-adapter-dist Keycloak WildFly Dist: Server and Adapter pom @@ -34,22 +34,18 @@ org.keycloak - feature-pack-server + keycloak-server-feature-pack ${project.version} zip org.keycloak - feature-pack-adapter + keycloak-adapter-feature-pack ${project.version} zip - - ${project.artifactId}-${project.version} - - jboss-release 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 index e97a707cce..83253d7c56 100644 --- 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 @@ -17,7 +17,7 @@ --> - - + + \ 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 index ec35fbe8e4..955f404e96 100644 --- a/distribution/feature-pack-builds/server-only/pom.xml +++ b/distribution/feature-pack-builds/server-only/pom.xml @@ -14,7 +14,7 @@ pom - feature-pack-server + server-feature-pack server-only-build server-only-dist diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/assembly.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/assembly.xml similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/assembly.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/assembly.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/feature-pack-build.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/feature-pack-build.xml similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/feature-pack-build.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/feature-pack-build.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml similarity index 97% rename from distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml index 5369aaec0b..1fdf020390 100644 --- a/distribution/feature-pack-builds/server-only/feature-pack-server/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml @@ -25,7 +25,7 @@ 4.0.0 - feature-pack-server + keycloak-server-feature-pack Keycloak Feature Pack: Server pom @@ -72,7 +72,6 @@ - keycloak-feature-pack-server-${project.version} org.apache.maven.plugins diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/subsystems.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/subsystems.xml similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/subsystems.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/subsystems.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/template.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/template.xml similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/domain/template.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/domain/template.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/subsystems.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/subsystems.xml similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/subsystems.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/subsystems.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/template.xml b/distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/template.xml similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/configuration/standalone/template.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/configuration/standalone/template.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/content/standalone/configuration/keycloak-server.json rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/content/standalone/configuration/keycloak-server.json diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/core/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/com/google/zxing/javase/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/de/idyl/winzipaes/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/net/iharder/base64/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/freemarker/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-api/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-account-freemarker/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-adapter-core/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-core/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-oidc/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-broker-saml/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-file/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-infinispan/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-jpa/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo-update/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-connections-mongo/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core-jaxrs/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-core/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-api/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-email-freemarker/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-api/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-email/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jboss-logging/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-jpa/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-events-mongo/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-api/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-dir/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-single-file/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-export-import-zip/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-freemarker/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-forms-common-themes/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-invalidation-cache-model/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-jboss-adapter-core/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-js-adapter/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-kerberos-federation/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-ldap-federation/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-api/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-login-freemarker/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-api/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-file/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-jpa/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-mongo/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-jpa/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mem/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-model-sessions-mongo/main/module.xml rename to 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 diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-core/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-saml-protocol/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server-subsystem/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-server/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-services/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-core/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-facebook/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-github/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-google/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-linkedin/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-stackoverflow/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-social-twitter/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-api/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-timer-basic/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-undertow-adapter/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-adapter/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/keycloak/keycloak-wildfly-extensions/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/liquibase/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/mongodb/mongo-java-driver/main/module.xml diff --git a/distribution/feature-pack-builds/server-only/feature-pack-server/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 similarity index 100% rename from distribution/feature-pack-builds/server-only/feature-pack-server/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml rename to distribution/feature-pack-builds/server-only/server-feature-pack/src/main/resources/modules/system/layers/base/org/twitter4j/main/module.xml 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 index fab9e1016a..a855e8aa3e 100644 --- a/distribution/feature-pack-builds/server-only/server-only-build/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-only-build/pom.xml @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - server-only-build + keycloak-server-only-build Keycloak WildFly Build: Server Only pom @@ -34,14 +34,13 @@ org.keycloak - feature-pack-server + keycloak-server-feature-pack ${project.version} zip - ${project.artifactId}-${project.version} org.wildfly.build 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 index b1b7bde380..9e4b4f368f 100644 --- 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 @@ -17,6 +17,6 @@ --> - + \ 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 index 704449a131..1d7cc51697 100644 --- a/distribution/feature-pack-builds/server-only/server-only-dist/assembly.xml +++ b/distribution/feature-pack-builds/server-only/server-only-dist/assembly.xml @@ -19,7 +19,7 @@ - thin-server + full-server zip 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 index c4c7d31cbd..8d4422dfc5 100644 --- a/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml @@ -26,7 +26,7 @@ 4.0.0 org.keycloak - server-only-dist + keycloak-server-only-dist Keycloak WildFly Dist: Server Only pom @@ -34,16 +34,12 @@ org.keycloak - feature-pack-server + keycloak-server-feature-pack ${project.version} zip - - ${project.artifactId}-${project.version} - - jboss-release 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 index cbf3dcd072..d414b952a0 100644 --- 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 @@ -17,6 +17,6 @@ --> - + \ No newline at end of file From 18966334ab3013cb524dca98f636fd4194acd371 Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Mon, 27 Apr 2015 10:37:54 -0400 Subject: [PATCH 12/22] Update README.md --- distribution/feature-pack-builds/README.md | 28 ++++++++-------------- 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/distribution/feature-pack-builds/README.md b/distribution/feature-pack-builds/README.md index dfc27ccf08..fe4c55a49f 100644 --- a/distribution/feature-pack-builds/README.md +++ b/distribution/feature-pack-builds/README.md @@ -4,30 +4,22 @@ 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. -Combinations Created +Types of Builds Created -------------------- -Under +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: -Documentation -------------- - -* [User Guide, Admin REST API and Javadocs](http://keycloak.jboss.org/docs) -* Developer documentation - * [Hacking on Keycloak](misc/HackingOnKeycloak.md) - how to become a Keycloak contributor - * [Testsuite](misc/Testsuite.md) - details about testsuite, but also how to quickly run Keycloak during development and a few test tools (OTP generation, LDAP server, Mail server) - * [Database Testing](misc/DatabaseTesting.md) - how to do testing of Keycloak on different databases - * [Updating Database](misc/UpdatingDatabaseSchema.md) - how to change the Keycloak database - * [Release Process](misc/ReleaseProcess.md) - how to release Keycloak - - -License -------- - -* [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file +_mvn install -Pjboss-release_ From 625fb02dfee5b5f73cf63d3223703d1aa7618b8f Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Thu, 30 Apr 2015 17:07:34 +0200 Subject: [PATCH 13/22] Fix typo preventing adapter-only-dist feature pack to build --- .../adapter-only/adapter-only-dist/server-provisioning.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index ae103e70cd..bfdf9ae31d 100644 --- 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 @@ -20,6 +20,6 @@ - + \ No newline at end of file From 70ce96caa04b2d8eb20b70a0e73341fde7151e80 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Fri, 1 May 2015 10:19:39 +0200 Subject: [PATCH 14/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Fix overlooked file renames causing subsystem tests to fail --- .../adapter/extension/SubsystemParsingTestCase.java | 2 +- .../server/extension/SubsystemParsingTestCase.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java index d27ecd79a1..baa131b09d 100755 --- a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java @@ -69,7 +69,7 @@ public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { @Override protected String[] getSubsystemTemplatePaths() throws IOException { return new String[]{ - "/subsystem-templates/keycloak.xml" + "/subsystem-templates/keycloak-adapter.xml" }; } } diff --git a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java index af741a7d83..af951c30a7 100755 --- a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java @@ -58,4 +58,11 @@ public class SubsystemParsingTestCase extends AbstractSubsystemBaseTest { 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" + }; + } } From 89875aea02362059f8337c05814abe3760b9437a Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Fri, 1 May 2015 10:46:49 +0200 Subject: [PATCH 15/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Fix deprecated uses, and more code cleanup --- .../adapter/extension/Environment.java | 58 ------------------- .../KeycloakAdapterConfigService.java | 27 +-------- .../adapter/extension/KeycloakExtension.java | 3 +- .../extension/KeycloakSubsystemAdd.java | 9 +-- .../KeycloakSubsystemDefinition.java | 2 - .../adapter/extension/RealmAddHandler.java | 9 +-- .../extension/RealmWriteAttributeHandler.java | 6 -- .../extension/SecureDeploymentAddHandler.java | 9 +-- .../extension/RealmDefinitionTestCase.java | 3 - .../KeycloakAdapterConfigService.java | 5 -- .../server/extension/KeycloakExtension.java | 3 +- .../extension/KeycloakSubsystemAdd.java | 9 +-- .../extension/KeycloakSubsystemParser.java | 13 ----- .../server/logging/KeycloakLogger.java | 6 -- .../extension/SubsystemParsingTestCase.java | 2 - 15 files changed, 7 insertions(+), 157 deletions(-) delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/Environment.java deleted file mode 100644 index 06883c8448..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/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.adapter.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-adapter-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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java index cb2dddf744..c6f616adce 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java @@ -19,7 +19,6 @@ 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/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java index 2d2705fb9c..31f69572e2 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java @@ -71,8 +71,7 @@ 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, MGMT_API_VERSION.getMajor(), - MGMT_API_VERSION.getMinor(), MGMT_API_VERSION.getMicro()); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION); ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); registration.registerSubModel(REALM_DEFINITION); diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java index 9489179b68..81ad1ce5db 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java @@ -19,16 +19,12 @@ package org.keycloak.subsystem.adapter.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; -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.as.server.deployment.DeploymentUnitProcessor; -import org.jboss.msc.service.ServiceController; - -import java.util.List; /** * The Keycloak subsystem add update handler. @@ -39,11 +35,8 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @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) { diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java index c3562c464a..975fc6c503 100644 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java @@ -17,10 +17,8 @@ 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; diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java index df14e742f0..1651ddf651 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java @@ -21,11 +21,7 @@ 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; @@ -58,11 +54,8 @@ public final class RealmAddHandler extends AbstractAddStepHandler { } } - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @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.addRealm(operation, context.resolveExpressions(model)); } diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java index dd1af54902..f8f5e41b10 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java @@ -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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java index 1008d5552e..8bf263df2e 100755 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java +++ b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java @@ -21,11 +21,7 @@ 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; @@ -53,11 +49,8 @@ public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { } } - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @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-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java index 2865bc4341..92a1958a59 100755 --- a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java +++ b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java @@ -16,13 +16,10 @@ */ package org.keycloak.subsystem.adapter.extension; - import org.jboss.dmr.ModelNode; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.keycloak.subsystem.adapter.extension.SharedAttributeDefinitons; - /** * diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java index b1842b9dba..7f86d7981b 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java @@ -17,8 +17,6 @@ package org.keycloak.subsystem.server.extension; -import org.jboss.dmr.ModelNode; - import java.util.HashMap; import java.util.Map; @@ -38,9 +36,6 @@ public final class KeycloakAdapterConfigService { return INSTANCE; } - // keycloak-secured deployments - private final Map secureDeployments = new HashMap(); - // key=auth-server deployment name; value=web-context private final Map webContexts = new HashMap(); diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java index 3f431d2449..145b475653 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java @@ -70,8 +70,7 @@ 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, MGMT_API_VERSION.getMajor(), - MGMT_API_VERSION.getMinor(), MGMT_API_VERSION.getMicro()); + final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, MGMT_API_VERSION); ManagementResourceRegistration registration = subsystem.registerSubsystemModel(KEYCLOAK_SUBSYSTEM_RESOURCE); registration.registerSubModel(AUTH_SERVER_DEFINITION); diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java index a49c6324a7..622c0102f4 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java @@ -18,18 +18,14 @@ package org.keycloak.subsystem.server.extension; import org.jboss.as.controller.AbstractBoottimeAddStepHandler; import org.jboss.as.controller.OperationContext; -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.as.server.deployment.DeploymentUnitProcessor; -import org.jboss.msc.service.ServiceController; import org.keycloak.subsystem.server.extension.authserver.KeycloakServerDeploymentProcessor; -import java.util.List; - /** * The Keycloak subsystem add update handler. * @@ -39,11 +35,8 @@ class KeycloakSubsystemAdd extends AbstractBoottimeAddStepHandler { static final KeycloakSubsystemAdd INSTANCE = new KeycloakSubsystemAdd(); - /* - * TODO: Fix deprecated signature when dropping WildFly 8 support - */ @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) { diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java index 00b5cf4b11..921c576dd6 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java @@ -124,17 +124,4 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader
  • -1) { - // Multiline content. Use the overloaded variant that staxmapper will format - writer.writeCharacters(content); - } else { - // Staxmapper will just output the chars without adding newlines if this is used - char[] chars = content.toCharArray(); - writer.writeCharacters(chars, 0, chars.length); - } - } - } diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java index 752a25888d..bf6053b60a 100755 --- a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java +++ b/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java @@ -36,10 +36,4 @@ public interface KeycloakLogger extends BasicLogger { * A logger with a category of the package name. */ KeycloakLogger ROOT_LOGGER = Logger.getMessageLogger(KeycloakLogger.class, "org.jboss.keycloak"); - - @LogMessage(level = INFO) - @Message(value = "Keycloak subsystem override for deployment %s") - void deploymentSecured(String deployment); - - } diff --git a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java index af951c30a7..9f29a6f15b 100755 --- a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java +++ b/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java @@ -16,14 +16,12 @@ */ 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. From 943404689e5a2e97e5803c37eacec20926e8cfb9 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Mon, 4 May 2015 16:47:17 +0200 Subject: [PATCH 16/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Use WildFly 9.0.0.CR1 --- .../adapter-only-build/server-provisioning.xml | 2 +- .../adapter-only-dist/server-provisioning.xml | 2 +- integration/keycloak-as7-subsystem/pom.xml | 8 ++++---- pom.xml | 11 +++++------ 4 files changed, 11 insertions(+), 12 deletions(-) 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 index d8b8457a46..13de0ef371 100644 --- 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 @@ -18,7 +18,7 @@ - + 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 index bfdf9ae31d..b9f46bc9eb 100644 --- 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 @@ -18,7 +18,7 @@ - + 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/pom.xml b/pom.xml index 9819d9fb37..917c8ba625 100755 --- a/pom.xml +++ b/pom.xml @@ -49,11 +49,10 @@ 1.4.01 5.1.25 1.7.7.jbossorg-1 - 7.1.1.Final - 9.0.0.CR1-SNAPSHOT - 1.0.0.Beta3 - 9.0.0.CR1-SNAPSHOT + 9.0.0.CR1 + 1.0.0.CR1 1.0.0.Alpha8 + 7.1.1.Final 1.0.2.Final 2.2 1.14.1-beta @@ -579,13 +578,13 @@ org.wildfly wildfly-feature-pack - ${wildfly9.version} + ${wildfly.version} zip org.wildfly wildfly-web-feature-pack - ${wildfly9.version} + ${wildfly.version} zip From 7d2942e1be17f4dc927c22922f1db1ad53e946ba Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Tue, 5 May 2015 17:04:54 +0200 Subject: [PATCH 17/22] KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems - Rename keycloak-server-subsystem dir to wildfly-server-subsystem - Rename keycloak-agent-subsystem dir to keycloak-wildfly-agent-subsystem - Rename artifacts accordingly (keycloak- prefix) Only maven artifacts are renamed, jboss-modules modules are still called keycloak-server-subsystem, and keycloak-agent-subsystem --- .../adapter-only/adapter-feature-pack/pom.xml | 2 +- .../main/module.xml | 2 +- .../server-only/server-feature-pack/pom.xml | 2 +- .../keycloak-server-subsystem/main/module.xml | 2 +- distribution/modules/build.xml | 4 +- distribution/modules/pom.xml | 4 +- .../keycloak-adapter-subsystem/pom.xml | 105 -------- .../extension/CredentialAddHandler.java | 43 ---- .../extension/CredentialDefinition.java | 61 ----- .../CredentialReadWriteAttributeHandler.java | 50 ---- .../extension/CredentialRemoveHandler.java | 42 ---- ...cloakAdapterConfigDeploymentProcessor.java | 131 ---------- .../KeycloakAdapterConfigService.java | 179 -------------- .../KeycloakDependencyProcessor.java | 67 ----- .../KeycloakDependencyProcessorWildFly.java | 41 ---- .../adapter/extension/KeycloakExtension.java | 83 ------- .../extension/KeycloakSubsystemAdd.java | 59 ----- .../KeycloakSubsystemDefinition.java | 45 ---- .../extension/KeycloakSubsystemParser.java | 224 ----------------- .../adapter/extension/RealmAddHandler.java | 62 ----- .../adapter/extension/RealmDefinition.java | 87 ------- .../adapter/extension/RealmRemoveHandler.java | 41 ---- .../extension/RealmWriteAttributeHandler.java | 54 ----- .../extension/SecureDeploymentAddHandler.java | 57 ----- .../extension/SecureDeploymentDefinition.java | 130 ---------- .../SecureDeploymentRemoveHandler.java | 41 ---- ...SecureDeploymentWriteAttributeHandler.java | 59 ----- .../extension/SharedAttributeDefinitons.java | 228 ------------------ .../adapter/logging/KeycloakLogger.java | 45 ---- .../adapter/logging/KeycloakMessages.java | 34 --- .../org.jboss.as.controller.Extension | 1 - .../extension/LocalDescriptions.properties | 72 ------ .../resources/schema/wildfly-keycloak_1_1.xsd | 105 -------- .../subsystem-templates/keycloak-adapter.xml | 7 - .../extension/RealmDefinitionTestCase.java | 86 ------- .../extension/SubsystemParsingTestCase.java | 75 ------ .../adapter/extension/keycloak-1.1.xml | 24 -- .../subsystem/extension/keycloak-1.0.xml | 24 -- integration/pom.xml | 4 +- .../pom.xml | 2 +- .../KeycloakAdapterConfigService.java | 0 .../KeycloakDependencyProcessor.java | 0 .../KeycloakDependencyProcessorWildFly.java | 0 .../server/extension/KeycloakExtension.java | 0 .../extension/KeycloakSubsystemAdd.java | 0 .../KeycloakSubsystemDefinition.java | 0 .../extension/KeycloakSubsystemParser.java | 0 .../authserver/AbstractAddOverlayHandler.java | 0 .../authserver/AddProviderHandler.java | 0 .../authserver/AuthServerAddHandler.java | 0 .../authserver/AuthServerDefinition.java | 0 .../authserver/AuthServerRemoveHandler.java | 0 .../extension/authserver/AuthServerUtil.java | 0 .../AuthServerWriteAttributeHandler.java | 0 .../KeycloakServerDeploymentProcessor.java | 0 .../authserver/ListOverlaysHandler.java | 0 .../OverlayKeycloakServerJsonHandler.java | 0 .../authserver/RemoveOverlayHandler.java | 0 .../server/logging/KeycloakLogger.java | 0 .../server/logging/KeycloakMessages.java | 0 .../org.jboss.as.controller.Extension | 0 .../extension/LocalDescriptions.properties | 0 .../schema/wildfly-keycloak-server_1_1.xsd | 0 .../keycloak-datasources.xml | 0 .../subsystem-templates/keycloak-server.xml | 0 .../extension/SubsystemParsingTestCase.java | 0 .../server/extension/keycloak-server-1.1.xml | 0 pom.xml | 2 +- 68 files changed, 12 insertions(+), 2374 deletions(-) delete mode 100755 integration/keycloak-adapter-subsystem/pom.xml delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java delete mode 100644 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java delete mode 100755 integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java delete mode 100644 integration/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension delete mode 100755 integration/keycloak-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties delete mode 100755 integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd delete mode 100644 integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml delete mode 100755 integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java delete mode 100755 integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java delete mode 100644 integration/keycloak-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml delete mode 100644 integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/pom.xml (98%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/resources/META-INF/services/org.jboss.as.controller.Extension (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/resources/subsystem-templates/keycloak-datasources.xml (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/main/resources/subsystem-templates/keycloak-server.xml (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java (100%) rename integration/{keycloak-server-subsystem => wildfly-server-subsystem}/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml (100%) 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 index e63c89a8e2..796ec17530 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml @@ -106,7 +106,7 @@ org.keycloak - keycloak-adapter-subsystem + keycloak-wildfly-adapter-subsystem org.keycloak 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 index 9d90a27a28..ba05308f4b 100644 --- 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 @@ -25,7 +25,7 @@ - + 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 index 1fdf020390..e92bb865e8 100644 --- a/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml @@ -45,7 +45,7 @@ org.keycloak - keycloak-server-subsystem + keycloak-wildfly-server-subsystem ${project.version} 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 index 789c779dde..ca31dafdf9 100644 --- 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 @@ -30,7 +30,7 @@ - + diff --git a/distribution/modules/build.xml b/distribution/modules/build.xml index a48655e5e6..e7ede69426 100755 --- a/distribution/modules/build.xml +++ b/distribution/modules/build.xml @@ -337,10 +337,10 @@ - + - + diff --git a/distribution/modules/pom.xml b/distribution/modules/pom.xml index 713b9129ce..d1d3b8c2e3 100755 --- a/distribution/modules/pom.xml +++ b/distribution/modules/pom.xml @@ -56,12 +56,12 @@ org.keycloak - keycloak-server-subsystem + keycloak-wildfly-server-subsystem ${project.version} org.keycloak - keycloak-adapter-subsystem + keycloak-wildfly-adapter-subsystem ${project.version} diff --git a/integration/keycloak-adapter-subsystem/pom.xml b/integration/keycloak-adapter-subsystem/pom.xml deleted file mode 100755 index cd8be445ef..0000000000 --- a/integration/keycloak-adapter-subsystem/pom.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - 4.0.0 - - - org.keycloak - keycloak-parent - 1.3.0.Beta1-SNAPSHOT - ../../pom.xml - - - keycloak-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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java deleted file mode 100755 index 2b9852c32e..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java +++ /dev/null @@ -1,43 +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.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.dmr.ModelNode; - -/** - * Add a credential to a deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class CredentialAddHandler extends AbstractAddStepHandler { - - public CredentialAddHandler(AttributeDefinition... attributes) { - super(attributes); - } - - @Override - 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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java deleted file mode 100755 index 77dfd9db22..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java +++ /dev/null @@ -1,61 +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.adapter.extension; - -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; -import org.jboss.as.controller.operations.validation.StringLengthValidator; -import org.jboss.as.controller.registry.ManagementResourceRegistration; -import org.jboss.dmr.ModelType; - -/** - * Defines attributes and operations for a credential. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class CredentialDefinition extends SimpleResourceDefinition { - - public static final String TAG_NAME = "credential"; - - protected static final AttributeDefinition VALUE = - new SimpleAttributeDefinitionBuilder("value", ModelType.STRING, false) - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) - .build(); - - public CredentialDefinition() { - super(PathElement.pathElement(TAG_NAME), - KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), - new CredentialAddHandler(VALUE), - CredentialRemoveHandler.INSTANCE); - } - - @Override - public void registerOperations(ManagementResourceRegistration resourceRegistration) { - super.registerOperations(resourceRegistration); - resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); - } - - @Override - public void registerAttributes(ManagementResourceRegistration resourceRegistration) { - super.registerAttributes(resourceRegistration); - resourceRegistration.registerReadWriteAttribute(VALUE, null, new CredentialReadWriteAttributeHandler()); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java deleted file mode 100644 index 7aff17f171..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java +++ /dev/null @@ -1,50 +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.adapter.extension; - -import org.jboss.as.controller.AbstractWriteAttributeHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Update a credential value. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class CredentialReadWriteAttributeHandler extends AbstractWriteAttributeHandler { - - @Override - protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode resolvedValue, ModelNode currentValue, AbstractWriteAttributeHandler.HandbackHolder hh) throws OperationFailedException { - - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.updateCredential(operation, attributeName, resolvedValue); - - hh.setHandback(ckService); - - return false; - } - - @Override - protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { - ckService.updateCredential(operation, attributeName, valueToRestore); - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java deleted file mode 100644 index 36923f08df..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java +++ /dev/null @@ -1,42 +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.adapter.extension; - -import org.jboss.as.controller.AbstractRemoveStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Remove a credential from a deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public final class CredentialRemoveHandler extends AbstractRemoveStepHandler { - - public static CredentialRemoveHandler INSTANCE = new CredentialRemoveHandler(); - - private CredentialRemoveHandler() {} - - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.removeCredential(operation); - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java deleted file mode 100755 index f6246273e2..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java +++ /dev/null @@ -1,131 +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.adapter.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.common.WarMetaData; -import org.jboss.logging.Logger; -import org.jboss.metadata.javaee.spec.ParamValueMetaData; -import org.jboss.metadata.web.jboss.JBossWebMetaData; -import org.jboss.metadata.web.spec.LoginConfigMetaData; -import org.keycloak.subsystem.adapter.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. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitProcessor { - protected Logger log = Logger.getLogger(KeycloakAdapterConfigDeploymentProcessor.class); - - // This param name is defined again in Keycloak Undertow Integration class - // org.keycloak.adapters.undertow.KeycloakServletExtension. We have this value in - // two places to avoid dependency between Keycloak Subsystem and Keyclaok Undertow Integration. - public static final String AUTH_DATA_PARAM_NAME = "org.keycloak.json.adapterConfig"; - - // not sure if we need this yet, keeping here just in case - protected void addSecurityDomain(DeploymentUnit deploymentUnit, KeycloakAdapterConfigService service) { - String deploymentName = deploymentUnit.getName(); - if (!service.isSecureDeployment(deploymentName)) { - return; - } - 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 || !loginConfig.getAuthMethod().equalsIgnoreCase("KEYCLOAK")) { - return; - } - - webMetaData.setSecurityDomain("keycloak"); - } - - @Override - public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { - DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); - - String deploymentName = deploymentUnit.getName(); - KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); - if (service.isSecureDeployment(deploymentName)) { - addKeycloakAuthData(phaseContext, deploymentName, service); - } - - // FYI, Undertow Extension will find deployments that have auth-method set to KEYCLOAK - - // todo notsure if we need this - // addSecurityDomain(deploymentUnit, service); - } - - private void addKeycloakAuthData(DeploymentPhaseContext phaseContext, String deploymentName, KeycloakAdapterConfigService service) throws DeploymentUnitProcessingException { - DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); - WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); - if (warMetaData == null) { - throw new DeploymentUnitProcessingException("WarMetaData not found for " + deploymentName + ". Make sure you have specified a WAR as your secure-deployment in the Keycloak subsystem."); - } - - addJSONData(service.getJSON(deploymentName), warMetaData); - JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); - if (webMetaData == null) { - webMetaData = new JBossWebMetaData(); - warMetaData.setMergedJBossWebMetaData(webMetaData); - } - - LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); - if (loginConfig == null) { - loginConfig = new LoginConfigMetaData(); - webMetaData.setLoginConfig(loginConfig); - } - loginConfig.setAuthMethod("KEYCLOAK"); - loginConfig.setRealmName(service.getRealmName(deploymentName)); - KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentName); - } - - 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(AUTH_DATA_PARAM_NAME); - param.setParamValue(json); - contextParams.add(param); - - webMetaData.setContextParams(contextParams); - } - - @Override - public void undeploy(DeploymentUnit du) { - - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java deleted file mode 100755 index c6f616adce..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java +++ /dev/null @@ -1,179 +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.adapter.extension; - -import org.jboss.dmr.ModelNode; -import org.jboss.dmr.Property; - -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 String CREDENTIALS_JSON_NAME = "credentials"; - - private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); - - public static KeycloakAdapterConfigService getInstance() { - return INSTANCE; - } - - private final Map realms = new HashMap(); - - // keycloak-secured deployments - private final Map secureDeployments = new HashMap(); - - - private KeycloakAdapterConfigService() { - } - - public void addRealm(ModelNode operation, ModelNode model) { - this.realms.put(realmNameFromOp(operation), model.clone()); - } - - public void updateRealm(ModelNode operation, String attrName, ModelNode resolvedValue) { - ModelNode realm = this.realms.get(realmNameFromOp(operation)); - realm.get(attrName).set(resolvedValue); - } - - public void removeRealm(ModelNode operation) { - this.realms.remove(realmNameFromOp(operation)); - } - - public void addSecureDeployment(ModelNode operation, ModelNode model) { - ModelNode deployment = model.clone(); - this.secureDeployments.put(deploymentNameFromOp(operation), deployment); - } - - public void updateSecureDeployment(ModelNode operation, String attrName, ModelNode resolvedValue) { - ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); - deployment.get(attrName).set(resolvedValue); - } - - public void removeSecureDeployment(ModelNode operation) { - this.secureDeployments.remove(deploymentNameFromOp(operation)); - } - - public void addCredential(ModelNode operation, ModelNode model) { - ModelNode credentials = credentialsFromOp(operation); - if (!credentials.isDefined()) { - credentials = new ModelNode(); - } - - String credentialName = credentialNameFromOp(operation); - credentials.get(credentialName).set(model.get("value").asString()); - - ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); - deployment.get(CREDENTIALS_JSON_NAME).set(credentials); - } - - public void removeCredential(ModelNode operation) { - ModelNode credentials = credentialsFromOp(operation); - if (!credentials.isDefined()) { - throw new RuntimeException("Can not remove credential. No credential defined for deployment in op " + operation.toString()); - } - - String credentialName = credentialNameFromOp(operation); - credentials.remove(credentialName); - } - - public void updateCredential(ModelNode operation, String attrName, ModelNode resolvedValue) { - ModelNode credentials = credentialsFromOp(operation); - if (!credentials.isDefined()) { - throw new RuntimeException("Can not update credential. No credential defined for deployment in op " + operation.toString()); - } - - String credentialName = credentialNameFromOp(operation); - credentials.get(credentialName).set(resolvedValue); - } - - private ModelNode credentialsFromOp(ModelNode operation) { - ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); - return deployment.get(CREDENTIALS_JSON_NAME); - } - - private String realmNameFromOp(ModelNode operation) { - return valueFromOpAddress(RealmDefinition.TAG_NAME, operation); - } - - private String deploymentNameFromOp(ModelNode operation) { - return valueFromOpAddress(SecureDeploymentDefinition.TAG_NAME, operation); - } - - private String credentialNameFromOp(ModelNode operation) { - return valueFromOpAddress(CredentialDefinition.TAG_NAME, operation); - } - - private String valueFromOpAddress(String addrElement, ModelNode operation) { - String deploymentName = getValueOfAddrElement(operation.get(ADDRESS), addrElement); - if (deploymentName == null) throw new RuntimeException("Can't find '" + addrElement + "' in address " + operation.toString()); - return deploymentName; - } - - private String getValueOfAddrElement(ModelNode address, String elementName) { - for (ModelNode element : address.asList()) { - if (element.has(elementName)) return element.get(elementName).asString(); - } - - return null; - } - - public String getRealmName(String deploymentName) { - ModelNode deployment = this.secureDeployments.get(deploymentName); - return deployment.get(RealmDefinition.TAG_NAME).asString(); - - } - - public String getJSON(String deploymentName) { - ModelNode deployment = this.secureDeployments.get(deploymentName); - String realmName = deployment.get(RealmDefinition.TAG_NAME).asString(); - ModelNode realm = this.realms.get(realmName); - - ModelNode json = new ModelNode(); - json.get(RealmDefinition.TAG_NAME).set(realmName); - - // Realm values set first. Some can be overridden by deployment values. - if (realm != null) setJSONValues(json, realm); - setJSONValues(json, deployment); - return json.toJSONString(true); - } - - private void setJSONValues(ModelNode json, ModelNode values) { - for (Property prop : values.asPropertyList()) { - String name = prop.getName(); - ModelNode value = prop.getValue(); - if (value.isDefined()) { - json.get(name).set(value); - } - } - } - - public boolean isSecureDeployment(String deploymentName) { - //log.info("********* CHECK KEYCLOAK DEPLOYMENT: deployments.size()" + deployments.size()); - - return this.secureDeployments.containsKey(deploymentName); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java deleted file mode 100755 index 3e968b4af6..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java +++ /dev/null @@ -1,67 +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.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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java deleted file mode 100755 index a11bd01d68..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java +++ /dev/null @@ -1,41 +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.adapter.extension; - -import org.jboss.as.server.deployment.module.ModuleDependency; -import org.jboss.as.server.deployment.module.ModuleSpecification; -import org.jboss.modules.ModuleIdentifier; -import org.jboss.modules.ModuleLoader; - -/** - * Add platform-specific modules for WildFly. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. - */ -public class KeycloakDependencyProcessorWildFly extends KeycloakDependencyProcessor { - - 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_WILDFLY_ADAPTER, false, false, true, false)); - moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_UNDERTOW_ADAPTER, false, false, false, false)); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java deleted file mode 100755 index 31f69572e2..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java +++ /dev/null @@ -1,83 +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.adapter.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.adapter.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"; - 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 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 RealmDefinition REALM_DEFINITION = new RealmDefinition(); - static final SecureDeploymentDefinition SECURE_DEPLOYMENT_DEFINITION = new SecureDeploymentDefinition(); - static final CredentialDefinition CREDENTIAL_DEFINITION = new CredentialDefinition(); - - 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(REALM_DEFINITION); - ManagementResourceRegistration secureDeploymentRegistration = registration.registerSubModel(SECURE_DEPLOYMENT_DEFINITION); - secureDeploymentRegistration.registerSubModel(CREDENTIAL_DEFINITION); - - subsystem.registerXMLElementWriter(PARSER); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java deleted file mode 100755 index 81ad1ce5db..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java +++ /dev/null @@ -1,59 +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.adapter.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; - -/** - * 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 - chooseConfigDeploymentProcessor()); - } - }, OperationContext.Stage.RUNTIME); - } - - private DeploymentUnitProcessor chooseDependencyProcessor() { - return new KeycloakDependencyProcessorWildFly(); - } - - private DeploymentUnitProcessor chooseConfigDeploymentProcessor() { - return new KeycloakAdapterConfigDeploymentProcessor(); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java deleted file mode 100644 index 975fc6c503..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java +++ /dev/null @@ -1,45 +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.adapter.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/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java deleted file mode 100755 index 3c63f7e832..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java +++ /dev/null @@ -1,224 +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.adapter.extension; - -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.ArrayList; -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(RealmDefinition.TAG_NAME)) { - readRealm(reader, list); - } - else if (reader.getLocalName().equals(SecureDeploymentDefinition.TAG_NAME)) { - readDeployment(reader, list); - } - } - } - - // used for debugging - private int nextTag(XMLExtendedStreamReader reader) throws XMLStreamException { - return reader.nextTag(); - } - - private void readRealm(XMLExtendedStreamReader reader, List list) throws XMLStreamException { - String realmName = readNameAttribute(reader); - ModelNode addRealm = new ModelNode(); - addRealm.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); - PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), - PathElement.pathElement(RealmDefinition.TAG_NAME, realmName)); - addRealm.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); - - while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { - String tagName = reader.getLocalName(); - SimpleAttributeDefinition def = RealmDefinition.lookup(tagName); - if (def == null) throw new XMLStreamException("Unknown realm tag " + tagName); - def.parseAndSetParameter(reader.getElementText(), addRealm, reader); - } - - if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addRealm)) { - //TODO: externalize the message - throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); - } - - list.add(addRealm); - } - - private void readDeployment(XMLExtendedStreamReader reader, List resourcesToAdd) throws XMLStreamException { - String name = readNameAttribute(reader); - ModelNode addSecureDeployment = new ModelNode(); - addSecureDeployment.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); - PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), - PathElement.pathElement(SecureDeploymentDefinition.TAG_NAME, name)); - addSecureDeployment.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); - List credentialsToAdd = new ArrayList(); - while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { - String tagName = reader.getLocalName(); - if (tagName.equals(CredentialDefinition.TAG_NAME)) { - readCredential(reader, addr, credentialsToAdd); - continue; - } - - SimpleAttributeDefinition def = SecureDeploymentDefinition.lookup(tagName); - if (def == null) throw new XMLStreamException("Unknown secure-deployment tag " + tagName); - def.parseAndSetParameter(reader.getElementText(), addSecureDeployment, reader); - } - - - /** - * TODO need to check realm-ref first. - if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addSecureDeployment)) { - //TODO: externalize the message - throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); - } - */ - - // Must add credentials after the deployment is added. - resourcesToAdd.add(addSecureDeployment); - resourcesToAdd.addAll(credentialsToAdd); - } - - public void readCredential(XMLExtendedStreamReader reader, PathAddress parent, List credentialsToAdd) throws XMLStreamException { - String name = readNameAttribute(reader); - ModelNode addCredential = new ModelNode(); - addCredential.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); - PathAddress addr = PathAddress.pathAddress(parent, PathElement.pathElement(CredentialDefinition.TAG_NAME, name)); - addCredential.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); - addCredential.get(CredentialDefinition.VALUE.getName()).set(reader.getElementText()); - credentialsToAdd.add(addCredential); - } - - // 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); - writeRealms(writer, context); - writeSecureDeployments(writer, context); - writer.writeEndElement(); - } - - private void writeRealms(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { - if (!context.getModelNode().get(RealmDefinition.TAG_NAME).isDefined()) { - return; - } - for (Property realm : context.getModelNode().get(RealmDefinition.TAG_NAME).asPropertyList()) { - writer.writeStartElement(RealmDefinition.TAG_NAME); - writer.writeAttribute("name", realm.getName()); - ModelNode realmElements = realm.getValue(); - for (AttributeDefinition element : RealmDefinition.ALL_ATTRIBUTES) { - element.marshallAsElement(realmElements, writer); - } - - writer.writeEndElement(); - } - } - - private void writeSecureDeployments(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { - if (!context.getModelNode().get(SecureDeploymentDefinition.TAG_NAME).isDefined()) { - return; - } - for (Property deployment : context.getModelNode().get(SecureDeploymentDefinition.TAG_NAME).asPropertyList()) { - writer.writeStartElement(SecureDeploymentDefinition.TAG_NAME); - writer.writeAttribute("name", deployment.getName()); - ModelNode deploymentElements = deployment.getValue(); - for (AttributeDefinition element : SecureDeploymentDefinition.ALL_ATTRIBUTES) { - element.marshallAsElement(deploymentElements, writer); - } - - ModelNode credentials = deploymentElements.get(CredentialDefinition.TAG_NAME); - if (credentials.isDefined()) { - writeCredentials(writer, credentials); - } - - writer.writeEndElement(); - } - } - - private void writeCredentials(XMLExtendedStreamWriter writer, ModelNode credentials) throws XMLStreamException { - for (Property credential : credentials.asPropertyList()) { - writer.writeStartElement(CredentialDefinition.TAG_NAME); - writer.writeAttribute("name", credential.getName()); - String credentialValue = credential.getValue().get(CredentialDefinition.VALUE.getName()).asString(); - writeCharacters(writer, credentialValue); - writer.writeEndElement(); - } - } - - // code taken from org.jboss.as.controller.AttributeMarshaller - private void writeCharacters(XMLExtendedStreamWriter writer, String content) throws XMLStreamException { - if (content.indexOf('\n') > -1) { - // Multiline content. Use the overloaded variant that staxmapper will format - writer.writeCharacters(content); - } else { - // Staxmapper will just output the chars without adding newlines if this is used - char[] chars = content.toCharArray(); - writer.writeCharacters(chars, 0, chars.length); - } - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java deleted file mode 100755 index 1651ddf651..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java +++ /dev/null @@ -1,62 +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.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.dmr.ModelNode; - -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; - -/** - * Add a new realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public final class RealmAddHandler extends AbstractAddStepHandler { - - public static RealmAddHandler INSTANCE = new RealmAddHandler(); - - private RealmAddHandler() {} - - @Override - protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { - // TODO: localize exception. get id number - if (!operation.get(OP).asString().equals(ADD)) { - throw new OperationFailedException("Unexpected operation for add realm. operation=" + operation.toString()); - } - - for (AttributeDefinition attrib : RealmDefinition.ALL_ATTRIBUTES) { - attrib.validateAndSet(operation, model); - } - - if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(model.clone())) { - //TODO: externalize message - throw new OperationFailedException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); - } - } - - @Override - 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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java deleted file mode 100755 index 160a6eb202..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java +++ /dev/null @@ -1,87 +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.adapter.extension; - -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; -import org.jboss.as.controller.registry.ManagementResourceRegistration; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Defines attributes and operations for the Realm - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class RealmDefinition extends SimpleResourceDefinition { - - public static final String TAG_NAME = "realm"; - - - protected static final List REALM_ONLY_ATTRIBUTES = new ArrayList(); - static { - } - - protected static final List ALL_ATTRIBUTES = new ArrayList(); - static { - ALL_ATTRIBUTES.addAll(REALM_ONLY_ATTRIBUTES); - ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); - } - - private static final Map DEFINITION_LOOKUP = new HashMap(); - static { - for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { - DEFINITION_LOOKUP.put(def.getXmlName(), def); - } - } - - private static final RealmWriteAttributeHandler realmAttrHandler = new RealmWriteAttributeHandler(ALL_ATTRIBUTES.toArray(new SimpleAttributeDefinition[0])); - - public RealmDefinition() { - super(PathElement.pathElement("realm"), - KeycloakExtension.getResourceDescriptionResolver("realm"), - RealmAddHandler.INSTANCE, - RealmRemoveHandler.INSTANCE); - } - - @Override - public void registerOperations(ManagementResourceRegistration resourceRegistration) { - super.registerOperations(resourceRegistration); - resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); - } - - @Override - public void registerAttributes(ManagementResourceRegistration resourceRegistration) { - super.registerAttributes(resourceRegistration); - - for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { - //TODO: use subclass of realmAttrHandler that can call RealmDefinition.validateTruststoreSetIfRequired - resourceRegistration.registerReadWriteAttribute(attrDef, null, realmAttrHandler); - } - } - - - public static SimpleAttributeDefinition lookup(String name) { - return DEFINITION_LOOKUP.get(name); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java deleted file mode 100644 index 16e43618ab..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java +++ /dev/null @@ -1,41 +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.adapter.extension; - -import org.jboss.as.controller.AbstractRemoveStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Remove a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public final class RealmRemoveHandler extends AbstractRemoveStepHandler { - - public static RealmRemoveHandler INSTANCE = new RealmRemoveHandler(); - - private RealmRemoveHandler() {} - - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.removeRealm(operation); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java deleted file mode 100755 index f8f5e41b10..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java +++ /dev/null @@ -1,54 +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.adapter.extension; - -import org.jboss.as.controller.AbstractWriteAttributeHandler; -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Update an attribute on a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { - - public RealmWriteAttributeHandler(AttributeDefinition... definitions) { - super(definitions); - } - - @Override - protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.updateRealm(operation, attributeName, resolvedValue); - - hh.setHandback(ckService); - - return false; - } - - @Override - protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { - ckService.updateRealm(operation, attributeName, valueToRestore); - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java deleted file mode 100755 index 8bf263df2e..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java +++ /dev/null @@ -1,57 +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.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.dmr.ModelNode; - -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; -import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; - -/** - * Add a deployment to a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { - - public static SecureDeploymentAddHandler INSTANCE = new SecureDeploymentAddHandler(); - - private SecureDeploymentAddHandler() {} - - @Override - protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { - // TODO: localize exception. get id number - if (!operation.get(OP).asString().equals(ADD)) { - throw new OperationFailedException("Unexpected operation for add secure deployment. operation=" + operation.toString()); - } - - for (AttributeDefinition attr : SecureDeploymentDefinition.ALL_ATTRIBUTES) { - attr.validateAndSet(operation, model); - } - } - - @Override - 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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java deleted file mode 100755 index 1932cc8e8e..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java +++ /dev/null @@ -1,130 +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.adapter.extension; - -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.PathElement; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import org.jboss.as.controller.SimpleResourceDefinition; -import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; -import org.jboss.as.controller.operations.validation.StringLengthValidator; -import org.jboss.as.controller.registry.ManagementResourceRegistration; -import org.jboss.dmr.ModelNode; -import org.jboss.dmr.ModelType; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Defines attributes and operations for a secure-deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class SecureDeploymentDefinition extends SimpleResourceDefinition { - - public static final String TAG_NAME = "secure-deployment"; - - protected static final SimpleAttributeDefinition REALM = - new SimpleAttributeDefinitionBuilder("realm", ModelType.STRING, true) - .setXmlName("realm") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition RESOURCE = - new SimpleAttributeDefinitionBuilder("resource", ModelType.STRING, true) - .setXmlName("resource") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition USE_RESOURCE_ROLE_MAPPINGS = - new SimpleAttributeDefinitionBuilder("use-resource-role-mappings", ModelType.BOOLEAN, true) - .setXmlName("use-resource-role-mappings") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition BEARER_ONLY = - new SimpleAttributeDefinitionBuilder("bearer-only", ModelType.BOOLEAN, true) - .setXmlName("bearer-only") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition ENABLE_BASIC_AUTH = - new SimpleAttributeDefinitionBuilder("enable-basic-auth", ModelType.BOOLEAN, true) - .setXmlName("enable-basic-auth") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition PUBLIC_CLIENT = - new SimpleAttributeDefinitionBuilder("public-client", ModelType.BOOLEAN, true) - .setXmlName("public-client") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - - protected static final List DEPLOYMENT_ONLY_ATTRIBUTES = new ArrayList(); - static { - DEPLOYMENT_ONLY_ATTRIBUTES.add(REALM); - DEPLOYMENT_ONLY_ATTRIBUTES.add(RESOURCE); - DEPLOYMENT_ONLY_ATTRIBUTES.add(USE_RESOURCE_ROLE_MAPPINGS); - DEPLOYMENT_ONLY_ATTRIBUTES.add(BEARER_ONLY); - DEPLOYMENT_ONLY_ATTRIBUTES.add(ENABLE_BASIC_AUTH); - DEPLOYMENT_ONLY_ATTRIBUTES.add(PUBLIC_CLIENT); - } - - protected static final List ALL_ATTRIBUTES = new ArrayList(); - static { - ALL_ATTRIBUTES.addAll(DEPLOYMENT_ONLY_ATTRIBUTES); - ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); - } - - private static final Map DEFINITION_LOOKUP = new HashMap(); - static { - for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { - DEFINITION_LOOKUP.put(def.getXmlName(), def); - } - } - - private static SecureDeploymentWriteAttributeHandler attrHandler = new SecureDeploymentWriteAttributeHandler(ALL_ATTRIBUTES); - - public SecureDeploymentDefinition() { - super(PathElement.pathElement(TAG_NAME), - KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), - SecureDeploymentAddHandler.INSTANCE, - SecureDeploymentRemoveHandler.INSTANCE); - } - - @Override - public void registerOperations(ManagementResourceRegistration resourceRegistration) { - super.registerOperations(resourceRegistration); - resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); - } - - @Override - public void registerAttributes(ManagementResourceRegistration resourceRegistration) { - super.registerAttributes(resourceRegistration); - for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { - resourceRegistration.registerReadWriteAttribute(attrDef, null, attrHandler); - } - } - - public static SimpleAttributeDefinition lookup(String name) { - return DEFINITION_LOOKUP.get(name); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java deleted file mode 100644 index 6e2aefc1ef..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java +++ /dev/null @@ -1,41 +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.adapter.extension; - -import org.jboss.as.controller.AbstractRemoveStepHandler; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.dmr.ModelNode; - -/** - * Remove a secure-deployment from a realm. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandler { - - public static SecureDeploymentRemoveHandler INSTANCE = new SecureDeploymentRemoveHandler(); - - private SecureDeploymentRemoveHandler() {} - - @Override - protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - ckService.removeSecureDeployment(operation); - } -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java deleted file mode 100755 index 6ed9d55b42..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java +++ /dev/null @@ -1,59 +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.adapter.extension; - -import org.jboss.as.controller.AbstractWriteAttributeHandler; -import org.jboss.as.controller.AttributeDefinition; -import org.jboss.as.controller.OperationContext; -import org.jboss.as.controller.OperationFailedException; -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.dmr.ModelNode; - -import java.util.List; - -/** - * Update an attribute on a secure-deployment. - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttributeHandler { - - public SecureDeploymentWriteAttributeHandler(List definitions) { - this(definitions.toArray(new AttributeDefinition[definitions.size()])); - } - - public SecureDeploymentWriteAttributeHandler(AttributeDefinition... definitions) { - super(definitions); - } - - @Override - protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { - KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); - hh.setHandback(ckService); - ckService.updateSecureDeployment(operation, attributeName, resolvedValue); - return false; - } - - @Override - protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, - ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { - ckService.updateSecureDeployment(operation, attributeName, valueToRestore); - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java deleted file mode 100755 index f7abc0485a..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java +++ /dev/null @@ -1,228 +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.adapter.extension; - -import org.jboss.as.controller.SimpleAttributeDefinition; -import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; -import org.jboss.as.controller.operations.validation.IntRangeValidator; -import org.jboss.as.controller.operations.validation.StringLengthValidator; -import org.jboss.dmr.ModelNode; -import org.jboss.dmr.ModelType; - -import java.util.ArrayList; -import java.util.List; - -/** - * Defines attributes that can be present in both a realm and an application (secure-deployment). - * - * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. - */ -public class SharedAttributeDefinitons { - - protected static final SimpleAttributeDefinition REALM_PUBLIC_KEY = - new SimpleAttributeDefinitionBuilder("realm-public-key", ModelType.STRING, true) - .setXmlName("realm-public-key") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition AUTH_SERVER_URL = - new SimpleAttributeDefinitionBuilder("auth-server-url", ModelType.STRING, true) - .setXmlName("auth-server-url") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition SSL_REQUIRED = - new SimpleAttributeDefinitionBuilder("ssl-required", ModelType.STRING, true) - .setXmlName("ssl-required") - .setAllowExpression(true) - .setDefaultValue(new ModelNode("external")) - .build(); - protected static final SimpleAttributeDefinition ALLOW_ANY_HOSTNAME = - new SimpleAttributeDefinitionBuilder("allow-any-hostname", ModelType.BOOLEAN, true) - .setXmlName("allow-any-hostname") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition DISABLE_TRUST_MANAGER = - new SimpleAttributeDefinitionBuilder("disable-trust-manager", ModelType.BOOLEAN, true) - .setXmlName("disable-trust-manager") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition TRUSTSTORE = - new SimpleAttributeDefinitionBuilder("truststore", ModelType.STRING, true) - .setXmlName("truststore") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition TRUSTSTORE_PASSWORD = - new SimpleAttributeDefinitionBuilder("truststore-password", ModelType.STRING, true) - .setXmlName("truststore-password") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CONNECTION_POOL_SIZE = - new SimpleAttributeDefinitionBuilder("connection-pool-size", ModelType.INT, true) - .setXmlName("connection-pool-size") - .setAllowExpression(true) - .setValidator(new IntRangeValidator(0, true)) - .build(); - - protected static final SimpleAttributeDefinition ENABLE_CORS = - new SimpleAttributeDefinitionBuilder("enable-cors", ModelType.BOOLEAN, true) - .setXmlName("enable-cors") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition CLIENT_KEYSTORE = - new SimpleAttributeDefinitionBuilder("client-keystore", ModelType.STRING, true) - .setXmlName("client-keystore") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CLIENT_KEYSTORE_PASSWORD = - new SimpleAttributeDefinitionBuilder("client-keystore-password", ModelType.STRING, true) - .setXmlName("client-keystore-password") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CLIENT_KEY_PASSWORD = - new SimpleAttributeDefinitionBuilder("client-key-password", ModelType.STRING, true) - .setXmlName("client-key-password") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CORS_MAX_AGE = - new SimpleAttributeDefinitionBuilder("cors-max-age", ModelType.INT, true) - .setXmlName("cors-max-age") - .setAllowExpression(true) - .setValidator(new IntRangeValidator(-1, true)) - .build(); - protected static final SimpleAttributeDefinition CORS_ALLOWED_HEADERS = - new SimpleAttributeDefinitionBuilder("cors-allowed-headers", ModelType.STRING, true) - .setXmlName("cors-allowed-headers") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition CORS_ALLOWED_METHODS = - new SimpleAttributeDefinitionBuilder("cors-allowed-methods", ModelType.STRING, true) - .setXmlName("cors-allowed-methods") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition EXPOSE_TOKEN = - new SimpleAttributeDefinitionBuilder("expose-token", ModelType.BOOLEAN, true) - .setXmlName("expose-token") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition AUTH_SERVER_URL_FOR_BACKEND_REQUESTS = - new SimpleAttributeDefinitionBuilder("auth-server-url-for-backend-requests", ModelType.STRING, true) - .setXmlName("auth-server-url-for-backend-requests") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition ALWAYS_REFRESH_TOKEN = - new SimpleAttributeDefinitionBuilder("always-refresh-token", ModelType.BOOLEAN, true) - .setXmlName("always-refresh-token") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition REGISTER_NODE_AT_STARTUP = - new SimpleAttributeDefinitionBuilder("register-node-at-startup", ModelType.BOOLEAN, true) - .setXmlName("register-node-at-startup") - .setAllowExpression(true) - .setDefaultValue(new ModelNode(false)) - .build(); - protected static final SimpleAttributeDefinition REGISTER_NODE_PERIOD = - new SimpleAttributeDefinitionBuilder("register-node-period", ModelType.INT, true) - .setXmlName("register-node-period") - .setAllowExpression(true) - .setValidator(new IntRangeValidator(-1, true)) - .build(); - protected static final SimpleAttributeDefinition TOKEN_STORE = - new SimpleAttributeDefinitionBuilder("token-store", ModelType.STRING, true) - .setXmlName("token-store") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - protected static final SimpleAttributeDefinition PRINCIPAL_ATTRIBUTE = - new SimpleAttributeDefinitionBuilder("principal-attribute", ModelType.STRING, true) - .setXmlName("principal-attribute") - .setAllowExpression(true) - .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) - .build(); - - - - protected static final List ATTRIBUTES = new ArrayList(); - static { - ATTRIBUTES.add(REALM_PUBLIC_KEY); - ATTRIBUTES.add(AUTH_SERVER_URL); - ATTRIBUTES.add(TRUSTSTORE); - ATTRIBUTES.add(TRUSTSTORE_PASSWORD); - ATTRIBUTES.add(SSL_REQUIRED); - ATTRIBUTES.add(ALLOW_ANY_HOSTNAME); - ATTRIBUTES.add(DISABLE_TRUST_MANAGER); - ATTRIBUTES.add(CONNECTION_POOL_SIZE); - ATTRIBUTES.add(ENABLE_CORS); - ATTRIBUTES.add(CLIENT_KEYSTORE); - ATTRIBUTES.add(CLIENT_KEYSTORE_PASSWORD); - ATTRIBUTES.add(CLIENT_KEY_PASSWORD); - ATTRIBUTES.add(CORS_MAX_AGE); - ATTRIBUTES.add(CORS_ALLOWED_HEADERS); - ATTRIBUTES.add(CORS_ALLOWED_METHODS); - ATTRIBUTES.add(EXPOSE_TOKEN); - ATTRIBUTES.add(AUTH_SERVER_URL_FOR_BACKEND_REQUESTS); - ATTRIBUTES.add(ALWAYS_REFRESH_TOKEN); - ATTRIBUTES.add(REGISTER_NODE_AT_STARTUP); - ATTRIBUTES.add(REGISTER_NODE_PERIOD); - ATTRIBUTES.add(TOKEN_STORE); - ATTRIBUTES.add(PRINCIPAL_ATTRIBUTE); - } - - /** - * truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false. - * - * @param attributes The full set of attributes. - * - * @return true if the attributes are valid, false otherwise. - */ - public static boolean validateTruststoreSetIfRequired(ModelNode attributes) { - if (isSet(attributes, DISABLE_TRUST_MANAGER)) { - return true; - } - - if (isSet(attributes, SSL_REQUIRED) && attributes.get(SSL_REQUIRED.getName()).asString().equals("none")) { - return true; - } - - return isSet(attributes, TRUSTSTORE) && isSet(attributes, TRUSTSTORE_PASSWORD); - } - - private static boolean isSet(ModelNode attributes, SimpleAttributeDefinition def) { - ModelNode attribute = attributes.get(def.getName()); - - if (def.getType() == ModelType.BOOLEAN) { - return attribute.isDefined() && attribute.asBoolean(); - } - - return attribute.isDefined() && !attribute.asString().isEmpty(); - } - - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java deleted file mode 100755 index de0bb4b9cb..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java +++ /dev/null @@ -1,45 +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.adapter.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"); - - @LogMessage(level = INFO) - @Message(value = "Keycloak subsystem override for deployment %s") - void deploymentSecured(String deployment); - - -} diff --git a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java b/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java deleted file mode 100755 index a45b0b82a9..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java +++ /dev/null @@ -1,34 +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.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/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension deleted file mode 100644 index b759b38f86..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension +++ /dev/null @@ -1 +0,0 @@ -org.keycloak.subsystem.adapter.extension.KeycloakExtension diff --git a/integration/keycloak-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties b/integration/keycloak-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties deleted file mode 100755 index c00bd8d227..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties +++ /dev/null @@ -1,72 +0,0 @@ -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.realm=A Keycloak realm. -keycloak.realm.add=Add a realm definition to the subsystem. -keycloak.realm.remove=Remove a realm from the subsystem. -keycloak.realm.realm-public-key=Public key of the realm -keycloak.realm.auth-server-url=Base URL of the Realm Auth Server -keycloak.realm.disable-trust-manager=Adapter will not use a trust manager when making adapter HTTPS requests -keycloak.realm.ssl-required=Specify if SSL is required (valid values are all, external and none) -keycloak.realm.allow-any-hostname=SSL Setting -keycloak.realm.truststore=Truststore used for adapter client HTTPS requests -keycloak.realm.truststore-password=Password of the Truststore -keycloak.realm.connection-pool-size=Connection pool size for the client used by the adapter -keycloak.realm.enable-cors=Enable Keycloak CORS support -keycloak.realm.client-keystore=n/a -keycloak.realm.client-keystore-password=n/a -keycloak.realm.client-key-password=n/a -keycloak.realm.cors-max-age=CORS max-age header -keycloak.realm.cors-allowed-headers=CORS allowed headers -keycloak.realm.cors-allowed-methods=CORS allowed methods -keycloak.realm.expose-token=Enable secure URL that exposes access token -keycloak.realm.auth-server-url-for-backend-requests=URL to use to make background calls to auth server -keycloak.realm.always-refresh-token=Refresh token on every single web request -keycloak.realm.register-node-at-startup=Cluster setting -keycloak.realm.register-node-period=how often to re-register node -keycloak.realm.token-store=cookie or session storage for auth session data -keycloak.realm.principal-attribute=token attribute to use to set Principal name - - -keycloak.secure-deployment=A deployment secured by Keycloak -keycloak.secure-deployment.add=Add a deployment to be secured by Keycloak -keycloak.secure-deployment.realm=Keycloak realm -keycloak.secure-deployment.remove=Remove a deployment to be secured by Keycloak -keycloak.secure-deployment.realm-public-key=Public key of the realm -keycloak.secure-deployment.auth-server-url=Base URL of the Realm Auth Server -keycloak.secure-deployment.disable-trust-manager=Adapter will not use a trust manager when making adapter HTTPS requests -keycloak.secure-deployment.ssl-required=Specify if SSL is required (valid values are all, external and none) -keycloak.secure-deployment.allow-any-hostname=SSL Setting -keycloak.secure-deployment.truststore=Truststore used for adapter client HTTPS requests -keycloak.secure-deployment.truststore-password=Password of the Truststore -keycloak.secure-deployment.connection-pool-size=Connection pool size for the client used by the adapter -keycloak.secure-deployment.resource=Application name -keycloak.secure-deployment.use-resource-role-mappings=Use resource level permissions from token -keycloak.secure-deployment.credentials=Adapter credentials -keycloak.secure-deployment.bearer-only=Bearer Token Auth only -keycloak.secure-deployment.enable-basic-auth=Enable Basic Authentication -keycloak.secure-deployment.public-client=Public client -keycloak.secure-deployment.enable-cors=Enable Keycloak CORS support -keycloak.secure-deployment.client-keystore=n/a -keycloak.secure-deployment.client-keystore-password=n/a -keycloak.secure-deployment.client-key-password=n/a -keycloak.secure-deployment.cors-max-age=CORS max-age header -keycloak.secure-deployment.cors-allowed-headers=CORS allowed headers -keycloak.secure-deployment.cors-allowed-methods=CORS allowed methods -keycloak.secure-deployment.expose-token=Enable secure URL that exposes access token -keycloak.secure-deployment.auth-server-url-for-backend-requests=URL to use to make background calls to auth server -keycloak.secure-deployment.always-refresh-token=Refresh token on every single web request -keycloak.secure-deployment.register-node-at-startup=Cluster setting -keycloak.secure-deployment.register-node-period=how often to re-register node -keycloak.secure-deployment.token-store=cookie or session storage for auth session data -keycloak.secure-deployment.principal-attribute=token attribute to use to set Principal name - -keycloak.secure-deployment.credential=Credential value - -keycloak.credential=Credential -keycloak.credential.value=Credential value -keycloak.credential.add=Credential add -keycloak.credential.remove=Credential remove \ No newline at end of file diff --git a/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd b/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd deleted file mode 100755 index 269b3232dd..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The name of the realm. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The name of the realm. - - - - - - - - - - - - diff --git a/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml b/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml deleted file mode 100644 index a2187f6e1f..0000000000 --- a/integration/keycloak-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - org.keycloak.keycloak-adapter-subsystem - - - diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java deleted file mode 100755 index 92a1958a59..0000000000 --- a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java +++ /dev/null @@ -1,86 +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.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. - */ -public class RealmDefinitionTestCase { - - private ModelNode model; - - @Before - public void setUp() { - model = new ModelNode(); - model.get("realm").set("demo"); - model.get("resource").set("customer-portal"); - model.get("realm-public-key").set("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); - model.get("auth-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/login"); - model.get("code-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/access/codes"); - model.get("expose-token").set(true); - ModelNode credential = new ModelNode(); - credential.get("password").set("password"); - model.get("credentials").set(credential); - } - - @Test - public void testIsTruststoreSetIfRequired() throws Exception { - model.get("ssl-required").set("none"); - model.get("disable-trust-manager").set(true); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("none"); - model.get("disable-trust-manager").set(false); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(true); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(false); - Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("external"); - model.get("disable-trust-manager").set(false); - Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(false); - model.get("truststore").set("foo"); - Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("all"); - model.get("disable-trust-manager").set(false); - model.get("truststore").set("foo"); - model.get("truststore-password").set("password"); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - - model.get("ssl-required").set("external"); - model.get("disable-trust-manager").set(false); - model.get("truststore").set("foo"); - model.get("truststore-password").set("password"); - Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); - } - -} diff --git a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java b/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java deleted file mode 100755 index baa131b09d..0000000000 --- a/integration/keycloak-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java +++ /dev/null @@ -1,75 +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.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/keycloak-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml b/integration/keycloak-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml deleted file mode 100644 index 2d12d88576..0000000000 --- a/integration/keycloak-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 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/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml b/integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml deleted file mode 100644 index 014f825d00..0000000000 --- a/integration/keycloak-subsystem/src/test/resources/org/keycloak/subsystem/extension/keycloak-1.0.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 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/pom.xml b/integration/pom.xml index 9f1680cb35..4f5369dd53 100755 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -24,8 +24,8 @@ undertow wildfly-adapter wildfly-extensions - keycloak-server-subsystem - keycloak-adapter-subsystem + wildfly-server-subsystem + wildfly-adapter-subsystem keycloak-as7-subsystem js installed diff --git a/integration/keycloak-server-subsystem/pom.xml b/integration/wildfly-server-subsystem/pom.xml similarity index 98% rename from integration/keycloak-server-subsystem/pom.xml rename to integration/wildfly-server-subsystem/pom.xml index cb09739ed6..c4a6519bb9 100755 --- a/integration/keycloak-server-subsystem/pom.xml +++ b/integration/wildfly-server-subsystem/pom.xml @@ -24,7 +24,7 @@ ../../pom.xml - keycloak-server-subsystem + keycloak-wildfly-server-subsystem Keycloak Server Subsystem jar diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java diff --git a/integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java b/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java similarity index 100% rename from integration/keycloak-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java rename to integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java diff --git a/integration/keycloak-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension b/integration/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension similarity index 100% rename from integration/keycloak-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension rename to integration/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension diff --git a/integration/keycloak-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties b/integration/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties similarity index 100% rename from integration/keycloak-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties rename to integration/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties diff --git a/integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd b/integration/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd similarity index 100% rename from integration/keycloak-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd rename to integration/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd diff --git a/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml b/integration/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml similarity index 100% rename from integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml rename to integration/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml diff --git a/integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml b/integration/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml similarity index 100% rename from integration/keycloak-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml rename to integration/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml diff --git a/integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java b/integration/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java similarity index 100% rename from integration/keycloak-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java rename to integration/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java diff --git a/integration/keycloak-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml b/integration/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml similarity index 100% rename from integration/keycloak-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml rename to integration/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml diff --git a/pom.xml b/pom.xml index 917c8ba625..796918a8dd 100755 --- a/pom.xml +++ b/pom.xml @@ -282,7 +282,7 @@ org.keycloak - keycloak-adapter-subsystem + keycloak-wildfly-adapter-subsystem ${project.version} From 4e58bed39ed0dfbf8d4aa8c1be5fbd3aaf5c6d08 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Tue, 5 May 2015 20:17:23 +0200 Subject: [PATCH 18/22] Move keycloak modules under integration/keycloak --- integration/pom.xml | 5 +- integration/wildfly/pom.xml | 22 ++ .../wildfly/wildfly-adapter-subsystem/pom.xml | 105 +++++++ .../extension/CredentialAddHandler.java | 43 +++ .../extension/CredentialDefinition.java | 61 ++++ .../CredentialReadWriteAttributeHandler.java | 50 ++++ .../extension/CredentialRemoveHandler.java | 42 +++ ...cloakAdapterConfigDeploymentProcessor.java | 131 +++++++++ .../KeycloakAdapterConfigService.java | 179 ++++++++++++ .../KeycloakDependencyProcessor.java | 67 +++++ .../KeycloakDependencyProcessorWildFly.java | 41 +++ .../adapter/extension/KeycloakExtension.java | 83 ++++++ .../extension/KeycloakSubsystemAdd.java | 59 ++++ .../KeycloakSubsystemDefinition.java | 45 +++ .../extension/KeycloakSubsystemParser.java | 224 ++++++++++++++ .../adapter/extension/RealmAddHandler.java | 62 ++++ .../adapter/extension/RealmDefinition.java | 87 ++++++ .../adapter/extension/RealmRemoveHandler.java | 41 +++ .../extension/RealmWriteAttributeHandler.java | 54 ++++ .../extension/SecureDeploymentAddHandler.java | 57 ++++ .../extension/SecureDeploymentDefinition.java | 130 +++++++++ .../SecureDeploymentRemoveHandler.java | 41 +++ ...SecureDeploymentWriteAttributeHandler.java | 59 ++++ .../extension/SharedAttributeDefinitons.java | 228 +++++++++++++++ .../adapter/logging/KeycloakLogger.java | 45 +++ .../adapter/logging/KeycloakMessages.java | 34 +++ .../org.jboss.as.controller.Extension | 1 + .../extension/LocalDescriptions.properties | 72 +++++ .../resources/schema/wildfly-keycloak_1_1.xsd | 105 +++++++ .../subsystem-templates/keycloak-adapter.xml | 7 + .../extension/RealmDefinitionTestCase.java | 86 ++++++ .../extension/SubsystemParsingTestCase.java | 75 +++++ .../adapter/extension/keycloak-1.1.xml | 24 ++ .../{ => wildfly}/wildfly-adapter/pom.xml | 208 ++++++------- .../adapters/wildfly/SecurityInfoHelper.java | 232 +++++++-------- .../WildflyAuthenticationMechanism.java | 70 ++--- .../WildflyKeycloakServletExtension.java | 50 ++-- .../wildfly/WildflyRequestAuthenticator.java | 274 +++++++++--------- .../io.undertow.servlet.ServletExtension | 0 .../{ => wildfly}/wildfly-extensions/pom.xml | 2 +- .../wildfly/ModuleProviderLoaderFactory.java | 0 .../wildfly/ModuleThemeProviderFactory.java | 0 ...g.keycloak.freemarker.ThemeProviderFactory | 0 ...rg.keycloak.provider.ProviderLoaderFactory | 0 .../wildfly-server-subsystem/pom.xml | 4 +- .../KeycloakAdapterConfigService.java | 0 .../KeycloakDependencyProcessor.java | 0 .../KeycloakDependencyProcessorWildFly.java | 0 .../server/extension/KeycloakExtension.java | 0 .../extension/KeycloakSubsystemAdd.java | 0 .../KeycloakSubsystemDefinition.java | 0 .../extension/KeycloakSubsystemParser.java | 0 .../authserver/AbstractAddOverlayHandler.java | 0 .../authserver/AddProviderHandler.java | 0 .../authserver/AuthServerAddHandler.java | 0 .../authserver/AuthServerDefinition.java | 0 .../authserver/AuthServerRemoveHandler.java | 0 .../extension/authserver/AuthServerUtil.java | 0 .../AuthServerWriteAttributeHandler.java | 0 .../KeycloakServerDeploymentProcessor.java | 0 .../authserver/ListOverlaysHandler.java | 0 .../OverlayKeycloakServerJsonHandler.java | 0 .../authserver/RemoveOverlayHandler.java | 0 .../server/logging/KeycloakLogger.java | 0 .../server/logging/KeycloakMessages.java | 0 .../org.jboss.as.controller.Extension | 0 .../extension/LocalDescriptions.properties | 0 .../schema/wildfly-keycloak-server_1_1.xsd | 0 .../keycloak-datasources.xml | 0 .../subsystem-templates/keycloak-server.xml | 0 .../extension/SubsystemParsingTestCase.java | 0 .../server/extension/keycloak-server-1.1.xml | 0 72 files changed, 2781 insertions(+), 424 deletions(-) create mode 100644 integration/wildfly/pom.xml create mode 100755 integration/wildfly/wildfly-adapter-subsystem/pom.xml create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessor.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakMessages.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/main/resources/subsystem-templates/keycloak-adapter.xml create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java create mode 100755 integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/SubsystemParsingTestCase.java create mode 100644 integration/wildfly/wildfly-adapter-subsystem/src/test/resources/org/keycloak/subsystem/adapter/extension/keycloak-1.1.xml rename integration/{ => wildfly}/wildfly-adapter/pom.xml (95%) rename integration/{ => wildfly}/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/SecurityInfoHelper.java (97%) rename integration/{ => wildfly}/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyAuthenticationMechanism.java (98%) rename integration/{ => wildfly}/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyKeycloakServletExtension.java (98%) rename integration/{ => wildfly}/wildfly-adapter/src/main/java/org/keycloak/adapters/wildfly/WildflyRequestAuthenticator.java (97%) rename integration/{ => wildfly}/wildfly-adapter/src/main/resources/META-INF/services/io.undertow.servlet.ServletExtension (100%) rename integration/{ => wildfly}/wildfly-extensions/pom.xml (97%) rename integration/{ => wildfly}/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleProviderLoaderFactory.java (100%) rename integration/{ => wildfly}/wildfly-extensions/src/main/java/org/keycloak/provider/wildfly/ModuleThemeProviderFactory.java (100%) rename integration/{ => wildfly}/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProviderFactory (100%) rename integration/{ => wildfly}/wildfly-extensions/src/main/resources/META-INF/services/org.keycloak.provider.ProviderLoaderFactory (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/pom.xml (97%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java (100%) rename integration/{ => wildfly}/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml (100%) diff --git a/integration/pom.xml b/integration/pom.xml index 4f5369dd53..5c1f1328c8 100755 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -22,10 +22,7 @@ as7-eap6/adapter jetty undertow - wildfly-adapter - wildfly-extensions - wildfly-server-subsystem - wildfly-adapter-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/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java new file mode 100755 index 0000000000..2b9852c32e --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialAddHandler.java @@ -0,0 +1,43 @@ +/* + * 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.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.dmr.ModelNode; + +/** + * Add a credential to a deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class CredentialAddHandler extends AbstractAddStepHandler { + + public CredentialAddHandler(AttributeDefinition... attributes) { + super(attributes); + } + + @Override + 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/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java new file mode 100755 index 0000000000..77dfd9db22 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialDefinition.java @@ -0,0 +1,61 @@ +/* + * 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.controller.AttributeDefinition; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.operations.validation.StringLengthValidator; +import org.jboss.as.controller.registry.ManagementResourceRegistration; +import org.jboss.dmr.ModelType; + +/** + * Defines attributes and operations for a credential. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class CredentialDefinition extends SimpleResourceDefinition { + + public static final String TAG_NAME = "credential"; + + protected static final AttributeDefinition VALUE = + new SimpleAttributeDefinitionBuilder("value", ModelType.STRING, false) + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, false, true)) + .build(); + + public CredentialDefinition() { + super(PathElement.pathElement(TAG_NAME), + KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), + new CredentialAddHandler(VALUE), + CredentialRemoveHandler.INSTANCE); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + + @Override + public void registerAttributes(ManagementResourceRegistration resourceRegistration) { + super.registerAttributes(resourceRegistration); + resourceRegistration.registerReadWriteAttribute(VALUE, null, new CredentialReadWriteAttributeHandler()); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java new file mode 100644 index 0000000000..7aff17f171 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialReadWriteAttributeHandler.java @@ -0,0 +1,50 @@ +/* + * 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.adapter.extension; + +import org.jboss.as.controller.AbstractWriteAttributeHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Update a credential value. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class CredentialReadWriteAttributeHandler extends AbstractWriteAttributeHandler { + + @Override + protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode resolvedValue, ModelNode currentValue, AbstractWriteAttributeHandler.HandbackHolder hh) throws OperationFailedException { + + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.updateCredential(operation, attributeName, resolvedValue); + + hh.setHandback(ckService); + + return false; + } + + @Override + protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { + ckService.updateCredential(operation, attributeName, valueToRestore); + } + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java new file mode 100644 index 0000000000..36923f08df --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/CredentialRemoveHandler.java @@ -0,0 +1,42 @@ +/* + * 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.adapter.extension; + +import org.jboss.as.controller.AbstractRemoveStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Remove a credential from a deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public final class CredentialRemoveHandler extends AbstractRemoveStepHandler { + + public static CredentialRemoveHandler INSTANCE = new CredentialRemoveHandler(); + + private CredentialRemoveHandler() {} + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.removeCredential(operation); + } + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java new file mode 100755 index 0000000000..f6246273e2 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigDeploymentProcessor.java @@ -0,0 +1,131 @@ +/* + * 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.adapter.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.common.WarMetaData; +import org.jboss.logging.Logger; +import org.jboss.metadata.javaee.spec.ParamValueMetaData; +import org.jboss.metadata.web.jboss.JBossWebMetaData; +import org.jboss.metadata.web.spec.LoginConfigMetaData; +import org.keycloak.subsystem.adapter.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. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitProcessor { + protected Logger log = Logger.getLogger(KeycloakAdapterConfigDeploymentProcessor.class); + + // This param name is defined again in Keycloak Undertow Integration class + // org.keycloak.adapters.undertow.KeycloakServletExtension. We have this value in + // two places to avoid dependency between Keycloak Subsystem and Keyclaok Undertow Integration. + public static final String AUTH_DATA_PARAM_NAME = "org.keycloak.json.adapterConfig"; + + // not sure if we need this yet, keeping here just in case + protected void addSecurityDomain(DeploymentUnit deploymentUnit, KeycloakAdapterConfigService service) { + String deploymentName = deploymentUnit.getName(); + if (!service.isSecureDeployment(deploymentName)) { + return; + } + 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 || !loginConfig.getAuthMethod().equalsIgnoreCase("KEYCLOAK")) { + return; + } + + webMetaData.setSecurityDomain("keycloak"); + } + + @Override + public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException { + DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); + + String deploymentName = deploymentUnit.getName(); + KeycloakAdapterConfigService service = KeycloakAdapterConfigService.getInstance(); + if (service.isSecureDeployment(deploymentName)) { + addKeycloakAuthData(phaseContext, deploymentName, service); + } + + // FYI, Undertow Extension will find deployments that have auth-method set to KEYCLOAK + + // todo notsure if we need this + // addSecurityDomain(deploymentUnit, service); + } + + private void addKeycloakAuthData(DeploymentPhaseContext phaseContext, String deploymentName, KeycloakAdapterConfigService service) throws DeploymentUnitProcessingException { + DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit(); + WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY); + if (warMetaData == null) { + throw new DeploymentUnitProcessingException("WarMetaData not found for " + deploymentName + ". Make sure you have specified a WAR as your secure-deployment in the Keycloak subsystem."); + } + + addJSONData(service.getJSON(deploymentName), warMetaData); + JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData(); + if (webMetaData == null) { + webMetaData = new JBossWebMetaData(); + warMetaData.setMergedJBossWebMetaData(webMetaData); + } + + LoginConfigMetaData loginConfig = webMetaData.getLoginConfig(); + if (loginConfig == null) { + loginConfig = new LoginConfigMetaData(); + webMetaData.setLoginConfig(loginConfig); + } + loginConfig.setAuthMethod("KEYCLOAK"); + loginConfig.setRealmName(service.getRealmName(deploymentName)); + KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentName); + } + + 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(AUTH_DATA_PARAM_NAME); + param.setParamValue(json); + contextParams.add(param); + + webMetaData.setContextParams(contextParams); + } + + @Override + public void undeploy(DeploymentUnit du) { + + } + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java new file mode 100755 index 0000000000..c6f616adce --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakAdapterConfigService.java @@ -0,0 +1,179 @@ +/* + * 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.dmr.ModelNode; +import org.jboss.dmr.Property; + +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 String CREDENTIALS_JSON_NAME = "credentials"; + + private static final KeycloakAdapterConfigService INSTANCE = new KeycloakAdapterConfigService(); + + public static KeycloakAdapterConfigService getInstance() { + return INSTANCE; + } + + private final Map realms = new HashMap(); + + // keycloak-secured deployments + private final Map secureDeployments = new HashMap(); + + + private KeycloakAdapterConfigService() { + } + + public void addRealm(ModelNode operation, ModelNode model) { + this.realms.put(realmNameFromOp(operation), model.clone()); + } + + public void updateRealm(ModelNode operation, String attrName, ModelNode resolvedValue) { + ModelNode realm = this.realms.get(realmNameFromOp(operation)); + realm.get(attrName).set(resolvedValue); + } + + public void removeRealm(ModelNode operation) { + this.realms.remove(realmNameFromOp(operation)); + } + + public void addSecureDeployment(ModelNode operation, ModelNode model) { + ModelNode deployment = model.clone(); + this.secureDeployments.put(deploymentNameFromOp(operation), deployment); + } + + public void updateSecureDeployment(ModelNode operation, String attrName, ModelNode resolvedValue) { + ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); + deployment.get(attrName).set(resolvedValue); + } + + public void removeSecureDeployment(ModelNode operation) { + this.secureDeployments.remove(deploymentNameFromOp(operation)); + } + + public void addCredential(ModelNode operation, ModelNode model) { + ModelNode credentials = credentialsFromOp(operation); + if (!credentials.isDefined()) { + credentials = new ModelNode(); + } + + String credentialName = credentialNameFromOp(operation); + credentials.get(credentialName).set(model.get("value").asString()); + + ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); + deployment.get(CREDENTIALS_JSON_NAME).set(credentials); + } + + public void removeCredential(ModelNode operation) { + ModelNode credentials = credentialsFromOp(operation); + if (!credentials.isDefined()) { + throw new RuntimeException("Can not remove credential. No credential defined for deployment in op " + operation.toString()); + } + + String credentialName = credentialNameFromOp(operation); + credentials.remove(credentialName); + } + + public void updateCredential(ModelNode operation, String attrName, ModelNode resolvedValue) { + ModelNode credentials = credentialsFromOp(operation); + if (!credentials.isDefined()) { + throw new RuntimeException("Can not update credential. No credential defined for deployment in op " + operation.toString()); + } + + String credentialName = credentialNameFromOp(operation); + credentials.get(credentialName).set(resolvedValue); + } + + private ModelNode credentialsFromOp(ModelNode operation) { + ModelNode deployment = this.secureDeployments.get(deploymentNameFromOp(operation)); + return deployment.get(CREDENTIALS_JSON_NAME); + } + + private String realmNameFromOp(ModelNode operation) { + return valueFromOpAddress(RealmDefinition.TAG_NAME, operation); + } + + private String deploymentNameFromOp(ModelNode operation) { + return valueFromOpAddress(SecureDeploymentDefinition.TAG_NAME, operation); + } + + private String credentialNameFromOp(ModelNode operation) { + return valueFromOpAddress(CredentialDefinition.TAG_NAME, operation); + } + + private String valueFromOpAddress(String addrElement, ModelNode operation) { + String deploymentName = getValueOfAddrElement(operation.get(ADDRESS), addrElement); + if (deploymentName == null) throw new RuntimeException("Can't find '" + addrElement + "' in address " + operation.toString()); + return deploymentName; + } + + private String getValueOfAddrElement(ModelNode address, String elementName) { + for (ModelNode element : address.asList()) { + if (element.has(elementName)) return element.get(elementName).asString(); + } + + return null; + } + + public String getRealmName(String deploymentName) { + ModelNode deployment = this.secureDeployments.get(deploymentName); + return deployment.get(RealmDefinition.TAG_NAME).asString(); + + } + + public String getJSON(String deploymentName) { + ModelNode deployment = this.secureDeployments.get(deploymentName); + String realmName = deployment.get(RealmDefinition.TAG_NAME).asString(); + ModelNode realm = this.realms.get(realmName); + + ModelNode json = new ModelNode(); + json.get(RealmDefinition.TAG_NAME).set(realmName); + + // Realm values set first. Some can be overridden by deployment values. + if (realm != null) setJSONValues(json, realm); + setJSONValues(json, deployment); + return json.toJSONString(true); + } + + private void setJSONValues(ModelNode json, ModelNode values) { + for (Property prop : values.asPropertyList()) { + String name = prop.getName(); + ModelNode value = prop.getValue(); + if (value.isDefined()) { + json.get(name).set(value); + } + } + } + + public boolean isSecureDeployment(String deploymentName) { + //log.info("********* CHECK KEYCLOAK DEPLOYMENT: deployments.size()" + deployments.size()); + + return this.secureDeployments.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/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java new file mode 100755 index 0000000000..a11bd01d68 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakDependencyProcessorWildFly.java @@ -0,0 +1,41 @@ +/* + * 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.module.ModuleDependency; +import org.jboss.as.server.deployment.module.ModuleSpecification; +import org.jboss.modules.ModuleIdentifier; +import org.jboss.modules.ModuleLoader; + +/** + * Add platform-specific modules for WildFly. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2014 Red Hat Inc. + */ +public class KeycloakDependencyProcessorWildFly extends KeycloakDependencyProcessor { + + 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_WILDFLY_ADAPTER, false, false, true, false)); + moduleSpecification.addSystemDependency(new ModuleDependency(moduleLoader, KEYCLOAK_UNDERTOW_ADAPTER, false, false, false, false)); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java new file mode 100755 index 0000000000..31f69572e2 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakExtension.java @@ -0,0 +1,83 @@ +/* + * 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.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.adapter.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"; + 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 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 RealmDefinition REALM_DEFINITION = new RealmDefinition(); + static final SecureDeploymentDefinition SECURE_DEPLOYMENT_DEFINITION = new SecureDeploymentDefinition(); + static final CredentialDefinition CREDENTIAL_DEFINITION = new CredentialDefinition(); + + 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(REALM_DEFINITION); + ManagementResourceRegistration secureDeploymentRegistration = registration.registerSubModel(SECURE_DEPLOYMENT_DEFINITION); + secureDeploymentRegistration.registerSubModel(CREDENTIAL_DEFINITION); + + subsystem.registerXMLElementWriter(PARSER); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java new file mode 100755 index 0000000000..81ad1ce5db --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemAdd.java @@ -0,0 +1,59 @@ +/* + * 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.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; + +/** + * 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 + chooseConfigDeploymentProcessor()); + } + }, OperationContext.Stage.RUNTIME); + } + + private DeploymentUnitProcessor chooseDependencyProcessor() { + return new KeycloakDependencyProcessorWildFly(); + } + + private DeploymentUnitProcessor chooseConfigDeploymentProcessor() { + return new KeycloakAdapterConfigDeploymentProcessor(); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemDefinition.java new file mode 100644 index 0000000000..975fc6c503 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/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.adapter.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-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java new file mode 100755 index 0000000000..3c63f7e832 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/KeycloakSubsystemParser.java @@ -0,0 +1,224 @@ +/* + * 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.adapter.extension; + +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.ArrayList; +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(RealmDefinition.TAG_NAME)) { + readRealm(reader, list); + } + else if (reader.getLocalName().equals(SecureDeploymentDefinition.TAG_NAME)) { + readDeployment(reader, list); + } + } + } + + // used for debugging + private int nextTag(XMLExtendedStreamReader reader) throws XMLStreamException { + return reader.nextTag(); + } + + private void readRealm(XMLExtendedStreamReader reader, List list) throws XMLStreamException { + String realmName = readNameAttribute(reader); + ModelNode addRealm = new ModelNode(); + addRealm.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); + PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), + PathElement.pathElement(RealmDefinition.TAG_NAME, realmName)); + addRealm.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); + + while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { + String tagName = reader.getLocalName(); + SimpleAttributeDefinition def = RealmDefinition.lookup(tagName); + if (def == null) throw new XMLStreamException("Unknown realm tag " + tagName); + def.parseAndSetParameter(reader.getElementText(), addRealm, reader); + } + + if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addRealm)) { + //TODO: externalize the message + throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); + } + + list.add(addRealm); + } + + private void readDeployment(XMLExtendedStreamReader reader, List resourcesToAdd) throws XMLStreamException { + String name = readNameAttribute(reader); + ModelNode addSecureDeployment = new ModelNode(); + addSecureDeployment.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); + PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), + PathElement.pathElement(SecureDeploymentDefinition.TAG_NAME, name)); + addSecureDeployment.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); + List credentialsToAdd = new ArrayList(); + while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { + String tagName = reader.getLocalName(); + if (tagName.equals(CredentialDefinition.TAG_NAME)) { + readCredential(reader, addr, credentialsToAdd); + continue; + } + + SimpleAttributeDefinition def = SecureDeploymentDefinition.lookup(tagName); + if (def == null) throw new XMLStreamException("Unknown secure-deployment tag " + tagName); + def.parseAndSetParameter(reader.getElementText(), addSecureDeployment, reader); + } + + + /** + * TODO need to check realm-ref first. + if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addSecureDeployment)) { + //TODO: externalize the message + throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); + } + */ + + // Must add credentials after the deployment is added. + resourcesToAdd.add(addSecureDeployment); + resourcesToAdd.addAll(credentialsToAdd); + } + + public void readCredential(XMLExtendedStreamReader reader, PathAddress parent, List credentialsToAdd) throws XMLStreamException { + String name = readNameAttribute(reader); + ModelNode addCredential = new ModelNode(); + addCredential.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); + PathAddress addr = PathAddress.pathAddress(parent, PathElement.pathElement(CredentialDefinition.TAG_NAME, name)); + addCredential.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); + addCredential.get(CredentialDefinition.VALUE.getName()).set(reader.getElementText()); + credentialsToAdd.add(addCredential); + } + + // 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); + writeRealms(writer, context); + writeSecureDeployments(writer, context); + writer.writeEndElement(); + } + + private void writeRealms(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { + if (!context.getModelNode().get(RealmDefinition.TAG_NAME).isDefined()) { + return; + } + for (Property realm : context.getModelNode().get(RealmDefinition.TAG_NAME).asPropertyList()) { + writer.writeStartElement(RealmDefinition.TAG_NAME); + writer.writeAttribute("name", realm.getName()); + ModelNode realmElements = realm.getValue(); + for (AttributeDefinition element : RealmDefinition.ALL_ATTRIBUTES) { + element.marshallAsElement(realmElements, writer); + } + + writer.writeEndElement(); + } + } + + private void writeSecureDeployments(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { + if (!context.getModelNode().get(SecureDeploymentDefinition.TAG_NAME).isDefined()) { + return; + } + for (Property deployment : context.getModelNode().get(SecureDeploymentDefinition.TAG_NAME).asPropertyList()) { + writer.writeStartElement(SecureDeploymentDefinition.TAG_NAME); + writer.writeAttribute("name", deployment.getName()); + ModelNode deploymentElements = deployment.getValue(); + for (AttributeDefinition element : SecureDeploymentDefinition.ALL_ATTRIBUTES) { + element.marshallAsElement(deploymentElements, writer); + } + + ModelNode credentials = deploymentElements.get(CredentialDefinition.TAG_NAME); + if (credentials.isDefined()) { + writeCredentials(writer, credentials); + } + + writer.writeEndElement(); + } + } + + private void writeCredentials(XMLExtendedStreamWriter writer, ModelNode credentials) throws XMLStreamException { + for (Property credential : credentials.asPropertyList()) { + writer.writeStartElement(CredentialDefinition.TAG_NAME); + writer.writeAttribute("name", credential.getName()); + String credentialValue = credential.getValue().get(CredentialDefinition.VALUE.getName()).asString(); + writeCharacters(writer, credentialValue); + writer.writeEndElement(); + } + } + + // code taken from org.jboss.as.controller.AttributeMarshaller + private void writeCharacters(XMLExtendedStreamWriter writer, String content) throws XMLStreamException { + if (content.indexOf('\n') > -1) { + // Multiline content. Use the overloaded variant that staxmapper will format + writer.writeCharacters(content); + } else { + // Staxmapper will just output the chars without adding newlines if this is used + char[] chars = content.toCharArray(); + writer.writeCharacters(chars, 0, chars.length); + } + } + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java new file mode 100755 index 0000000000..1651ddf651 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmAddHandler.java @@ -0,0 +1,62 @@ +/* + * 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.controller.AbstractAddStepHandler; +import org.jboss.as.controller.AttributeDefinition; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; + +/** + * Add a new realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class RealmAddHandler extends AbstractAddStepHandler { + + public static RealmAddHandler INSTANCE = new RealmAddHandler(); + + private RealmAddHandler() {} + + @Override + protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { + // TODO: localize exception. get id number + if (!operation.get(OP).asString().equals(ADD)) { + throw new OperationFailedException("Unexpected operation for add realm. operation=" + operation.toString()); + } + + for (AttributeDefinition attrib : RealmDefinition.ALL_ATTRIBUTES) { + attrib.validateAndSet(operation, model); + } + + if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(model.clone())) { + //TODO: externalize message + throw new OperationFailedException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); + } + } + + @Override + 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/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java new file mode 100755 index 0000000000..160a6eb202 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmDefinition.java @@ -0,0 +1,87 @@ +/* + * 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.controller.AttributeDefinition; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.registry.ManagementResourceRegistration; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Defines attributes and operations for the Realm + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class RealmDefinition extends SimpleResourceDefinition { + + public static final String TAG_NAME = "realm"; + + + protected static final List REALM_ONLY_ATTRIBUTES = new ArrayList(); + static { + } + + protected static final List ALL_ATTRIBUTES = new ArrayList(); + static { + ALL_ATTRIBUTES.addAll(REALM_ONLY_ATTRIBUTES); + ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); + } + + private static final Map DEFINITION_LOOKUP = new HashMap(); + static { + for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { + DEFINITION_LOOKUP.put(def.getXmlName(), def); + } + } + + private static final RealmWriteAttributeHandler realmAttrHandler = new RealmWriteAttributeHandler(ALL_ATTRIBUTES.toArray(new SimpleAttributeDefinition[0])); + + public RealmDefinition() { + super(PathElement.pathElement("realm"), + KeycloakExtension.getResourceDescriptionResolver("realm"), + RealmAddHandler.INSTANCE, + RealmRemoveHandler.INSTANCE); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + + @Override + public void registerAttributes(ManagementResourceRegistration resourceRegistration) { + super.registerAttributes(resourceRegistration); + + for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { + //TODO: use subclass of realmAttrHandler that can call RealmDefinition.validateTruststoreSetIfRequired + resourceRegistration.registerReadWriteAttribute(attrDef, null, realmAttrHandler); + } + } + + + public static SimpleAttributeDefinition lookup(String name) { + return DEFINITION_LOOKUP.get(name); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java new file mode 100644 index 0000000000..16e43618ab --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmRemoveHandler.java @@ -0,0 +1,41 @@ +/* + * 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.controller.AbstractRemoveStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Remove a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class RealmRemoveHandler extends AbstractRemoveStepHandler { + + public static RealmRemoveHandler INSTANCE = new RealmRemoveHandler(); + + private RealmRemoveHandler() {} + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.removeRealm(operation); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java new file mode 100755 index 0000000000..f8f5e41b10 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/RealmWriteAttributeHandler.java @@ -0,0 +1,54 @@ +/* + * 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.controller.AbstractWriteAttributeHandler; +import org.jboss.as.controller.AttributeDefinition; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Update an attribute on a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class RealmWriteAttributeHandler extends AbstractWriteAttributeHandler { + + public RealmWriteAttributeHandler(AttributeDefinition... definitions) { + super(definitions); + } + + @Override + protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.updateRealm(operation, attributeName, resolvedValue); + + hh.setHandback(ckService); + + return false; + } + + @Override + protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { + ckService.updateRealm(operation, attributeName, valueToRestore); + } + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java new file mode 100755 index 0000000000..8bf263df2e --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentAddHandler.java @@ -0,0 +1,57 @@ +/* + * 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.controller.AbstractAddStepHandler; +import org.jboss.as.controller.AttributeDefinition; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.ADD; +import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.OP; + +/** + * Add a deployment to a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class SecureDeploymentAddHandler extends AbstractAddStepHandler { + + public static SecureDeploymentAddHandler INSTANCE = new SecureDeploymentAddHandler(); + + private SecureDeploymentAddHandler() {} + + @Override + protected void populateModel(ModelNode operation, ModelNode model) throws OperationFailedException { + // TODO: localize exception. get id number + if (!operation.get(OP).asString().equals(ADD)) { + throw new OperationFailedException("Unexpected operation for add secure deployment. operation=" + operation.toString()); + } + + for (AttributeDefinition attr : SecureDeploymentDefinition.ALL_ATTRIBUTES) { + attr.validateAndSet(operation, model); + } + } + + @Override + 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/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java new file mode 100755 index 0000000000..1932cc8e8e --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentDefinition.java @@ -0,0 +1,130 @@ +/* + * 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.controller.AttributeDefinition; +import org.jboss.as.controller.PathElement; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; +import org.jboss.as.controller.SimpleResourceDefinition; +import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler; +import org.jboss.as.controller.operations.validation.StringLengthValidator; +import org.jboss.as.controller.registry.ManagementResourceRegistration; +import org.jboss.dmr.ModelNode; +import org.jboss.dmr.ModelType; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Defines attributes and operations for a secure-deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class SecureDeploymentDefinition extends SimpleResourceDefinition { + + public static final String TAG_NAME = "secure-deployment"; + + protected static final SimpleAttributeDefinition REALM = + new SimpleAttributeDefinitionBuilder("realm", ModelType.STRING, true) + .setXmlName("realm") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition RESOURCE = + new SimpleAttributeDefinitionBuilder("resource", ModelType.STRING, true) + .setXmlName("resource") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition USE_RESOURCE_ROLE_MAPPINGS = + new SimpleAttributeDefinitionBuilder("use-resource-role-mappings", ModelType.BOOLEAN, true) + .setXmlName("use-resource-role-mappings") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition BEARER_ONLY = + new SimpleAttributeDefinitionBuilder("bearer-only", ModelType.BOOLEAN, true) + .setXmlName("bearer-only") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition ENABLE_BASIC_AUTH = + new SimpleAttributeDefinitionBuilder("enable-basic-auth", ModelType.BOOLEAN, true) + .setXmlName("enable-basic-auth") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition PUBLIC_CLIENT = + new SimpleAttributeDefinitionBuilder("public-client", ModelType.BOOLEAN, true) + .setXmlName("public-client") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + + protected static final List DEPLOYMENT_ONLY_ATTRIBUTES = new ArrayList(); + static { + DEPLOYMENT_ONLY_ATTRIBUTES.add(REALM); + DEPLOYMENT_ONLY_ATTRIBUTES.add(RESOURCE); + DEPLOYMENT_ONLY_ATTRIBUTES.add(USE_RESOURCE_ROLE_MAPPINGS); + DEPLOYMENT_ONLY_ATTRIBUTES.add(BEARER_ONLY); + DEPLOYMENT_ONLY_ATTRIBUTES.add(ENABLE_BASIC_AUTH); + DEPLOYMENT_ONLY_ATTRIBUTES.add(PUBLIC_CLIENT); + } + + protected static final List ALL_ATTRIBUTES = new ArrayList(); + static { + ALL_ATTRIBUTES.addAll(DEPLOYMENT_ONLY_ATTRIBUTES); + ALL_ATTRIBUTES.addAll(SharedAttributeDefinitons.ATTRIBUTES); + } + + private static final Map DEFINITION_LOOKUP = new HashMap(); + static { + for (SimpleAttributeDefinition def : ALL_ATTRIBUTES) { + DEFINITION_LOOKUP.put(def.getXmlName(), def); + } + } + + private static SecureDeploymentWriteAttributeHandler attrHandler = new SecureDeploymentWriteAttributeHandler(ALL_ATTRIBUTES); + + public SecureDeploymentDefinition() { + super(PathElement.pathElement(TAG_NAME), + KeycloakExtension.getResourceDescriptionResolver(TAG_NAME), + SecureDeploymentAddHandler.INSTANCE, + SecureDeploymentRemoveHandler.INSTANCE); + } + + @Override + public void registerOperations(ManagementResourceRegistration resourceRegistration) { + super.registerOperations(resourceRegistration); + resourceRegistration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE); + } + + @Override + public void registerAttributes(ManagementResourceRegistration resourceRegistration) { + super.registerAttributes(resourceRegistration); + for (AttributeDefinition attrDef : ALL_ATTRIBUTES) { + resourceRegistration.registerReadWriteAttribute(attrDef, null, attrHandler); + } + } + + public static SimpleAttributeDefinition lookup(String name) { + return DEFINITION_LOOKUP.get(name); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java new file mode 100644 index 0000000000..6e2aefc1ef --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentRemoveHandler.java @@ -0,0 +1,41 @@ +/* + * 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.controller.AbstractRemoveStepHandler; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.dmr.ModelNode; + +/** + * Remove a secure-deployment from a realm. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public final class SecureDeploymentRemoveHandler extends AbstractRemoveStepHandler { + + public static SecureDeploymentRemoveHandler INSTANCE = new SecureDeploymentRemoveHandler(); + + private SecureDeploymentRemoveHandler() {} + + @Override + protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + ckService.removeSecureDeployment(operation); + } +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java new file mode 100755 index 0000000000..6ed9d55b42 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SecureDeploymentWriteAttributeHandler.java @@ -0,0 +1,59 @@ +/* + * 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.controller.AbstractWriteAttributeHandler; +import org.jboss.as.controller.AttributeDefinition; +import org.jboss.as.controller.OperationContext; +import org.jboss.as.controller.OperationFailedException; +import org.jboss.as.controller.SimpleAttributeDefinition; +import org.jboss.dmr.ModelNode; + +import java.util.List; + +/** + * Update an attribute on a secure-deployment. + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class SecureDeploymentWriteAttributeHandler extends AbstractWriteAttributeHandler { + + public SecureDeploymentWriteAttributeHandler(List definitions) { + this(definitions.toArray(new AttributeDefinition[definitions.size()])); + } + + public SecureDeploymentWriteAttributeHandler(AttributeDefinition... definitions) { + super(definitions); + } + + @Override + protected boolean applyUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode resolvedValue, ModelNode currentValue, HandbackHolder hh) throws OperationFailedException { + KeycloakAdapterConfigService ckService = KeycloakAdapterConfigService.getInstance(); + hh.setHandback(ckService); + ckService.updateSecureDeployment(operation, attributeName, resolvedValue); + return false; + } + + @Override + protected void revertUpdateToRuntime(OperationContext context, ModelNode operation, String attributeName, + ModelNode valueToRestore, ModelNode valueToRevert, KeycloakAdapterConfigService ckService) throws OperationFailedException { + ckService.updateSecureDeployment(operation, attributeName, valueToRestore); + } + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java new file mode 100755 index 0000000000..f7abc0485a --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/extension/SharedAttributeDefinitons.java @@ -0,0 +1,228 @@ +/* + * 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.controller.SimpleAttributeDefinition; +import org.jboss.as.controller.SimpleAttributeDefinitionBuilder; +import org.jboss.as.controller.operations.validation.IntRangeValidator; +import org.jboss.as.controller.operations.validation.StringLengthValidator; +import org.jboss.dmr.ModelNode; +import org.jboss.dmr.ModelType; + +import java.util.ArrayList; +import java.util.List; + +/** + * Defines attributes that can be present in both a realm and an application (secure-deployment). + * + * @author Stan Silvert ssilvert@redhat.com (C) 2013 Red Hat Inc. + */ +public class SharedAttributeDefinitons { + + protected static final SimpleAttributeDefinition REALM_PUBLIC_KEY = + new SimpleAttributeDefinitionBuilder("realm-public-key", ModelType.STRING, true) + .setXmlName("realm-public-key") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition AUTH_SERVER_URL = + new SimpleAttributeDefinitionBuilder("auth-server-url", ModelType.STRING, true) + .setXmlName("auth-server-url") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition SSL_REQUIRED = + new SimpleAttributeDefinitionBuilder("ssl-required", ModelType.STRING, true) + .setXmlName("ssl-required") + .setAllowExpression(true) + .setDefaultValue(new ModelNode("external")) + .build(); + protected static final SimpleAttributeDefinition ALLOW_ANY_HOSTNAME = + new SimpleAttributeDefinitionBuilder("allow-any-hostname", ModelType.BOOLEAN, true) + .setXmlName("allow-any-hostname") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition DISABLE_TRUST_MANAGER = + new SimpleAttributeDefinitionBuilder("disable-trust-manager", ModelType.BOOLEAN, true) + .setXmlName("disable-trust-manager") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition TRUSTSTORE = + new SimpleAttributeDefinitionBuilder("truststore", ModelType.STRING, true) + .setXmlName("truststore") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition TRUSTSTORE_PASSWORD = + new SimpleAttributeDefinitionBuilder("truststore-password", ModelType.STRING, true) + .setXmlName("truststore-password") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CONNECTION_POOL_SIZE = + new SimpleAttributeDefinitionBuilder("connection-pool-size", ModelType.INT, true) + .setXmlName("connection-pool-size") + .setAllowExpression(true) + .setValidator(new IntRangeValidator(0, true)) + .build(); + + protected static final SimpleAttributeDefinition ENABLE_CORS = + new SimpleAttributeDefinitionBuilder("enable-cors", ModelType.BOOLEAN, true) + .setXmlName("enable-cors") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition CLIENT_KEYSTORE = + new SimpleAttributeDefinitionBuilder("client-keystore", ModelType.STRING, true) + .setXmlName("client-keystore") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CLIENT_KEYSTORE_PASSWORD = + new SimpleAttributeDefinitionBuilder("client-keystore-password", ModelType.STRING, true) + .setXmlName("client-keystore-password") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CLIENT_KEY_PASSWORD = + new SimpleAttributeDefinitionBuilder("client-key-password", ModelType.STRING, true) + .setXmlName("client-key-password") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CORS_MAX_AGE = + new SimpleAttributeDefinitionBuilder("cors-max-age", ModelType.INT, true) + .setXmlName("cors-max-age") + .setAllowExpression(true) + .setValidator(new IntRangeValidator(-1, true)) + .build(); + protected static final SimpleAttributeDefinition CORS_ALLOWED_HEADERS = + new SimpleAttributeDefinitionBuilder("cors-allowed-headers", ModelType.STRING, true) + .setXmlName("cors-allowed-headers") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition CORS_ALLOWED_METHODS = + new SimpleAttributeDefinitionBuilder("cors-allowed-methods", ModelType.STRING, true) + .setXmlName("cors-allowed-methods") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition EXPOSE_TOKEN = + new SimpleAttributeDefinitionBuilder("expose-token", ModelType.BOOLEAN, true) + .setXmlName("expose-token") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition AUTH_SERVER_URL_FOR_BACKEND_REQUESTS = + new SimpleAttributeDefinitionBuilder("auth-server-url-for-backend-requests", ModelType.STRING, true) + .setXmlName("auth-server-url-for-backend-requests") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition ALWAYS_REFRESH_TOKEN = + new SimpleAttributeDefinitionBuilder("always-refresh-token", ModelType.BOOLEAN, true) + .setXmlName("always-refresh-token") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition REGISTER_NODE_AT_STARTUP = + new SimpleAttributeDefinitionBuilder("register-node-at-startup", ModelType.BOOLEAN, true) + .setXmlName("register-node-at-startup") + .setAllowExpression(true) + .setDefaultValue(new ModelNode(false)) + .build(); + protected static final SimpleAttributeDefinition REGISTER_NODE_PERIOD = + new SimpleAttributeDefinitionBuilder("register-node-period", ModelType.INT, true) + .setXmlName("register-node-period") + .setAllowExpression(true) + .setValidator(new IntRangeValidator(-1, true)) + .build(); + protected static final SimpleAttributeDefinition TOKEN_STORE = + new SimpleAttributeDefinitionBuilder("token-store", ModelType.STRING, true) + .setXmlName("token-store") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + protected static final SimpleAttributeDefinition PRINCIPAL_ATTRIBUTE = + new SimpleAttributeDefinitionBuilder("principal-attribute", ModelType.STRING, true) + .setXmlName("principal-attribute") + .setAllowExpression(true) + .setValidator(new StringLengthValidator(1, Integer.MAX_VALUE, true, true)) + .build(); + + + + protected static final List ATTRIBUTES = new ArrayList(); + static { + ATTRIBUTES.add(REALM_PUBLIC_KEY); + ATTRIBUTES.add(AUTH_SERVER_URL); + ATTRIBUTES.add(TRUSTSTORE); + ATTRIBUTES.add(TRUSTSTORE_PASSWORD); + ATTRIBUTES.add(SSL_REQUIRED); + ATTRIBUTES.add(ALLOW_ANY_HOSTNAME); + ATTRIBUTES.add(DISABLE_TRUST_MANAGER); + ATTRIBUTES.add(CONNECTION_POOL_SIZE); + ATTRIBUTES.add(ENABLE_CORS); + ATTRIBUTES.add(CLIENT_KEYSTORE); + ATTRIBUTES.add(CLIENT_KEYSTORE_PASSWORD); + ATTRIBUTES.add(CLIENT_KEY_PASSWORD); + ATTRIBUTES.add(CORS_MAX_AGE); + ATTRIBUTES.add(CORS_ALLOWED_HEADERS); + ATTRIBUTES.add(CORS_ALLOWED_METHODS); + ATTRIBUTES.add(EXPOSE_TOKEN); + ATTRIBUTES.add(AUTH_SERVER_URL_FOR_BACKEND_REQUESTS); + ATTRIBUTES.add(ALWAYS_REFRESH_TOKEN); + ATTRIBUTES.add(REGISTER_NODE_AT_STARTUP); + ATTRIBUTES.add(REGISTER_NODE_PERIOD); + ATTRIBUTES.add(TOKEN_STORE); + ATTRIBUTES.add(PRINCIPAL_ATTRIBUTE); + } + + /** + * truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false. + * + * @param attributes The full set of attributes. + * + * @return true if the attributes are valid, false otherwise. + */ + public static boolean validateTruststoreSetIfRequired(ModelNode attributes) { + if (isSet(attributes, DISABLE_TRUST_MANAGER)) { + return true; + } + + if (isSet(attributes, SSL_REQUIRED) && attributes.get(SSL_REQUIRED.getName()).asString().equals("none")) { + return true; + } + + return isSet(attributes, TRUSTSTORE) && isSet(attributes, TRUSTSTORE_PASSWORD); + } + + private static boolean isSet(ModelNode attributes, SimpleAttributeDefinition def) { + ModelNode attribute = attributes.get(def.getName()); + + if (def.getType() == ModelType.BOOLEAN) { + return attribute.isDefined() && attribute.asBoolean(); + } + + return attribute.isDefined() && !attribute.asString().isEmpty(); + } + + +} diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java new file mode 100755 index 0000000000..de0bb4b9cb --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/java/org/keycloak/subsystem/adapter/logging/KeycloakLogger.java @@ -0,0 +1,45 @@ +/* + * 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.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"); + + @LogMessage(level = INFO) + @Message(value = "Keycloak subsystem override for deployment %s") + void deploymentSecured(String deployment); + + +} 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/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties new file mode 100755 index 0000000000..c00bd8d227 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/org/keycloak/subsystem/adapter/extension/LocalDescriptions.properties @@ -0,0 +1,72 @@ +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.realm=A Keycloak realm. +keycloak.realm.add=Add a realm definition to the subsystem. +keycloak.realm.remove=Remove a realm from the subsystem. +keycloak.realm.realm-public-key=Public key of the realm +keycloak.realm.auth-server-url=Base URL of the Realm Auth Server +keycloak.realm.disable-trust-manager=Adapter will not use a trust manager when making adapter HTTPS requests +keycloak.realm.ssl-required=Specify if SSL is required (valid values are all, external and none) +keycloak.realm.allow-any-hostname=SSL Setting +keycloak.realm.truststore=Truststore used for adapter client HTTPS requests +keycloak.realm.truststore-password=Password of the Truststore +keycloak.realm.connection-pool-size=Connection pool size for the client used by the adapter +keycloak.realm.enable-cors=Enable Keycloak CORS support +keycloak.realm.client-keystore=n/a +keycloak.realm.client-keystore-password=n/a +keycloak.realm.client-key-password=n/a +keycloak.realm.cors-max-age=CORS max-age header +keycloak.realm.cors-allowed-headers=CORS allowed headers +keycloak.realm.cors-allowed-methods=CORS allowed methods +keycloak.realm.expose-token=Enable secure URL that exposes access token +keycloak.realm.auth-server-url-for-backend-requests=URL to use to make background calls to auth server +keycloak.realm.always-refresh-token=Refresh token on every single web request +keycloak.realm.register-node-at-startup=Cluster setting +keycloak.realm.register-node-period=how often to re-register node +keycloak.realm.token-store=cookie or session storage for auth session data +keycloak.realm.principal-attribute=token attribute to use to set Principal name + + +keycloak.secure-deployment=A deployment secured by Keycloak +keycloak.secure-deployment.add=Add a deployment to be secured by Keycloak +keycloak.secure-deployment.realm=Keycloak realm +keycloak.secure-deployment.remove=Remove a deployment to be secured by Keycloak +keycloak.secure-deployment.realm-public-key=Public key of the realm +keycloak.secure-deployment.auth-server-url=Base URL of the Realm Auth Server +keycloak.secure-deployment.disable-trust-manager=Adapter will not use a trust manager when making adapter HTTPS requests +keycloak.secure-deployment.ssl-required=Specify if SSL is required (valid values are all, external and none) +keycloak.secure-deployment.allow-any-hostname=SSL Setting +keycloak.secure-deployment.truststore=Truststore used for adapter client HTTPS requests +keycloak.secure-deployment.truststore-password=Password of the Truststore +keycloak.secure-deployment.connection-pool-size=Connection pool size for the client used by the adapter +keycloak.secure-deployment.resource=Application name +keycloak.secure-deployment.use-resource-role-mappings=Use resource level permissions from token +keycloak.secure-deployment.credentials=Adapter credentials +keycloak.secure-deployment.bearer-only=Bearer Token Auth only +keycloak.secure-deployment.enable-basic-auth=Enable Basic Authentication +keycloak.secure-deployment.public-client=Public client +keycloak.secure-deployment.enable-cors=Enable Keycloak CORS support +keycloak.secure-deployment.client-keystore=n/a +keycloak.secure-deployment.client-keystore-password=n/a +keycloak.secure-deployment.client-key-password=n/a +keycloak.secure-deployment.cors-max-age=CORS max-age header +keycloak.secure-deployment.cors-allowed-headers=CORS allowed headers +keycloak.secure-deployment.cors-allowed-methods=CORS allowed methods +keycloak.secure-deployment.expose-token=Enable secure URL that exposes access token +keycloak.secure-deployment.auth-server-url-for-backend-requests=URL to use to make background calls to auth server +keycloak.secure-deployment.always-refresh-token=Refresh token on every single web request +keycloak.secure-deployment.register-node-at-startup=Cluster setting +keycloak.secure-deployment.register-node-period=how often to re-register node +keycloak.secure-deployment.token-store=cookie or session storage for auth session data +keycloak.secure-deployment.principal-attribute=token attribute to use to set Principal name + +keycloak.secure-deployment.credential=Credential value + +keycloak.credential=Credential +keycloak.credential.value=Credential value +keycloak.credential.add=Credential add +keycloak.credential.remove=Credential remove \ No newline at end of file diff --git a/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd new file mode 100755 index 0000000000..269b3232dd --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/main/resources/schema/wildfly-keycloak_1_1.xsd @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the realm. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The name of the realm. + + + + + + + + + + + + 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/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java b/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java new file mode 100755 index 0000000000..92a1958a59 --- /dev/null +++ b/integration/wildfly/wildfly-adapter-subsystem/src/test/java/org/keycloak/subsystem/adapter/extension/RealmDefinitionTestCase.java @@ -0,0 +1,86 @@ +/* + * 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.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. + */ +public class RealmDefinitionTestCase { + + private ModelNode model; + + @Before + public void setUp() { + model = new ModelNode(); + model.get("realm").set("demo"); + model.get("resource").set("customer-portal"); + model.get("realm-public-key").set("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); + model.get("auth-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/login"); + model.get("code-url").set("http://localhost:8080/auth-server/rest/realms/demo/protocol/openid-connect/access/codes"); + model.get("expose-token").set(true); + ModelNode credential = new ModelNode(); + credential.get("password").set("password"); + model.get("credentials").set(credential); + } + + @Test + public void testIsTruststoreSetIfRequired() throws Exception { + model.get("ssl-required").set("none"); + model.get("disable-trust-manager").set(true); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("none"); + model.get("disable-trust-manager").set(false); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(true); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(false); + Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("external"); + model.get("disable-trust-manager").set(false); + Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(false); + model.get("truststore").set("foo"); + Assert.assertFalse(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("all"); + model.get("disable-trust-manager").set(false); + model.get("truststore").set("foo"); + model.get("truststore-password").set("password"); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + + model.get("ssl-required").set("external"); + model.get("disable-trust-manager").set(false); + model.get("truststore").set("foo"); + model.get("truststore-password").set("password"); + Assert.assertTrue(SharedAttributeDefinitons.validateTruststoreSetIfRequired(model)); + } + +} 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/wildfly-server-subsystem/pom.xml b/integration/wildfly/wildfly-server-subsystem/pom.xml similarity index 97% rename from integration/wildfly-server-subsystem/pom.xml rename to integration/wildfly/wildfly-server-subsystem/pom.xml index c4a6519bb9..71bb0fd66e 100755 --- a/integration/wildfly-server-subsystem/pom.xml +++ b/integration/wildfly/wildfly-server-subsystem/pom.xml @@ -20,8 +20,8 @@ org.keycloak keycloak-parent - 1.2.0.RC1-SNAPSHOT - ../../pom.xml + 1.3.0.Beta1-SNAPSHOT + ../../../pom.xml keycloak-wildfly-server-subsystem diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakAdapterConfigService.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessor.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakDependencyProcessorWildFly.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakExtension.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemAdd.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemDefinition.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/KeycloakSubsystemParser.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AbstractAddOverlayHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AddProviderHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerAddHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerDefinition.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerRemoveHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerUtil.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/AuthServerWriteAttributeHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/KeycloakServerDeploymentProcessor.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/ListOverlaysHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/OverlayKeycloakServerJsonHandler.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/extension/authserver/RemoveOverlayHandler.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakLogger.java diff --git a/integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java b/integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java similarity index 100% rename from integration/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java rename to integration/wildfly/wildfly-server-subsystem/src/main/java/org/keycloak/subsystem/server/logging/KeycloakMessages.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension rename to integration/wildfly/wildfly-server-subsystem/src/main/resources/META-INF/services/org.jboss.as.controller.Extension diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties rename to integration/wildfly/wildfly-server-subsystem/src/main/resources/org/keycloak/subsystem/server/extension/LocalDescriptions.properties diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd rename to integration/wildfly/wildfly-server-subsystem/src/main/resources/schema/wildfly-keycloak-server_1_1.xsd diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml rename to integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-datasources.xml diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml rename to integration/wildfly/wildfly-server-subsystem/src/main/resources/subsystem-templates/keycloak-server.xml diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java rename to integration/wildfly/wildfly-server-subsystem/src/test/java/org/keycloak/subsystem/server/extension/SubsystemParsingTestCase.java diff --git a/integration/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 similarity index 100% rename from integration/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml rename to integration/wildfly/wildfly-server-subsystem/src/test/resources/org/keycloak/subsystem/server/extension/keycloak-server-1.1.xml From 01e9b3bcff6aed246582e027c5c605d3dc66ea3b Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Tue, 5 May 2015 21:30:42 +0200 Subject: [PATCH 19/22] Upgrade version on overlooked poms to 1.3.0.Beta1-SNAPSHOT --- .../adapter-only/adapter-feature-pack/pom.xml | 2 +- .../adapter-only/adapter-only-build/pom.xml | 2 +- .../adapter-only/adapter-only-dist/pom.xml | 2 +- distribution/feature-pack-builds/adapter-only/pom.xml | 2 +- distribution/feature-pack-builds/pom.xml | 2 +- distribution/feature-pack-builds/server-and-adapter/pom.xml | 2 +- .../server-and-adapter/server-and-adapter-build/pom.xml | 2 +- .../server-and-adapter/server-and-adapter-dist/pom.xml | 2 +- distribution/feature-pack-builds/server-only/pom.xml | 2 +- .../server-only/server-feature-pack/pom.xml | 4 ++-- .../layers/base/org/keycloak/keycloak-server/main/module.xml | 2 +- .../feature-pack-builds/server-only/server-only-build/pom.xml | 2 +- .../feature-pack-builds/server-only/server-only-dist/pom.xml | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) 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 index 796ec17530..ee690f1002 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-feature-pack/pom.xml @@ -20,7 +20,7 @@ org.keycloak adapter-only-builds - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 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 index 9bb0bc75f5..95f05ec1d3 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-build/pom.xml @@ -20,7 +20,7 @@ org.keycloak adapter-only-builds - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 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 index f03c53f56b..4f1ca1a774 100644 --- a/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/adapter-only-dist/pom.xml @@ -20,7 +20,7 @@ org.keycloak adapter-only-builds - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/distribution/feature-pack-builds/adapter-only/pom.xml b/distribution/feature-pack-builds/adapter-only/pom.xml index 45efa4b1c3..bd57e0bc36 100644 --- a/distribution/feature-pack-builds/adapter-only/pom.xml +++ b/distribution/feature-pack-builds/adapter-only/pom.xml @@ -3,7 +3,7 @@ feature-pack-builds org.keycloak - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml Adapter Only Builds diff --git a/distribution/feature-pack-builds/pom.xml b/distribution/feature-pack-builds/pom.xml index 3fb1c74b50..a35b3f7a6f 100644 --- a/distribution/feature-pack-builds/pom.xml +++ b/distribution/feature-pack-builds/pom.xml @@ -3,7 +3,7 @@ distribution-pom org.keycloak - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml Feature Pack Builds diff --git a/distribution/feature-pack-builds/server-and-adapter/pom.xml b/distribution/feature-pack-builds/server-and-adapter/pom.xml index a7d021349e..9616217531 100644 --- a/distribution/feature-pack-builds/server-and-adapter/pom.xml +++ b/distribution/feature-pack-builds/server-and-adapter/pom.xml @@ -3,7 +3,7 @@ feature-pack-builds org.keycloak - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml Builds with both server and adapter 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 index 2b81b9dc5e..2bc3a0a697 100644 --- 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 @@ -20,7 +20,7 @@ org.keycloak server-and-adapter - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 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 index f4adfd115c..4a492fddc3 100644 --- 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 @@ -20,7 +20,7 @@ org.keycloak server-and-adapter - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 diff --git a/distribution/feature-pack-builds/server-only/pom.xml b/distribution/feature-pack-builds/server-only/pom.xml index 955f404e96..af41711f53 100644 --- a/distribution/feature-pack-builds/server-only/pom.xml +++ b/distribution/feature-pack-builds/server-only/pom.xml @@ -3,7 +3,7 @@ feature-pack-builds org.keycloak - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml Server Only Builds 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 index e92bb865e8..fd9d37f602 100644 --- a/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-feature-pack/pom.xml @@ -20,7 +20,7 @@ org.keycloak server-only-builds - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 @@ -38,7 +38,7 @@ pom - org.keycloak + org.keycloak.subsystem keycloak-server ${project.version} war 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 index 63d8ba5cdc..6c877817cf 100644 --- 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 @@ -4,7 +4,7 @@ - + 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 index a855e8aa3e..5d88347eb1 100644 --- a/distribution/feature-pack-builds/server-only/server-only-build/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-only-build/pom.xml @@ -20,7 +20,7 @@ org.keycloak server-only-builds - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 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 index 8d4422dfc5..4f13fbc899 100644 --- a/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml +++ b/distribution/feature-pack-builds/server-only/server-only-dist/pom.xml @@ -20,7 +20,7 @@ org.keycloak server-only-builds - 1.2.0.RC1-SNAPSHOT + 1.3.0.Beta1-SNAPSHOT ../pom.xml 4.0.0 From f65e804836b1d6fdc5f0ae8588b75b560fdcc84d Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Wed, 6 May 2015 16:51:49 +0200 Subject: [PATCH 20/22] WildFly testsuite work --- examples/demo-template/pom.xml | 21 + testsuite/wildfly/pom.xml | 504 ++++++++++++++++++ .../src/test/config/arq/arquillian.xml | 25 + 3 files changed, 550 insertions(+) create mode 100644 testsuite/wildfly/pom.xml create mode 100644 testsuite/wildfly/src/test/config/arq/arquillian.xml 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/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 + + + + From c28f5cef7a99030d68011c96df24be5875d1a646 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Wed, 6 May 2015 18:57:40 +0200 Subject: [PATCH 21/22] Fix WildFly org.apache.httpcomponents issue --- .../main/module.xml | 20 +++++++++++++++++++ .../keycloak-saml-protocol/main/module.xml | 1 + .../keycloak-services/main/module.xml | 1 + .../WEB-INF/jboss-deployment-structure.xml | 2 +- .../WEB-INF/jboss-deployment-structure.xml | 2 +- .../WEB-INF/jboss-deployment-structure.xml | 2 +- .../WEB-INF/jboss-deployment-structure.xml | 2 +- .../WEB-INF/jboss-deployment-structure.xml | 2 +- 8 files changed, 27 insertions(+), 5 deletions(-) create mode 100755 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 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-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 index 579ec1f491..fc0cd15d47 100644 --- 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 @@ -22,6 +22,7 @@ + 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 index ac4f9efac8..598d5dda44 100644 --- 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 @@ -12,6 +12,7 @@ + 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/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 From 30682968ff9c2b1c2c0febfb54b142f71d6705a1 Mon Sep 17 00:00:00 2001 From: Marko Strukelj Date: Thu, 7 May 2015 17:21:23 +0200 Subject: [PATCH 22/22] Fix invalid module references that should point to keycloak-wildfly-adapter --- .../org/keycloak/keycloak-adapter-subsystem/main/module.xml | 2 +- .../base/org/keycloak/keycloak-wildfly-adapter/main/module.xml | 2 +- .../base/org/keycloak/keycloak-server-subsystem/main/module.xml | 2 +- .../base/org/keycloak/keycloak-wildfly-adapter/main/module.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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 index ba05308f4b..f7cd89005d 100644 --- 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 @@ -41,7 +41,7 @@ - + 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 index 39fb66d2b3..df7cc036c8 100644 --- 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 @@ -4,7 +4,7 @@ - + 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 index ca31dafdf9..5233767d0d 100644 --- 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 @@ -46,7 +46,7 @@ - + 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 index 39fb66d2b3..df7cc036c8 100644 --- 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 @@ -4,7 +4,7 @@ - +