From 265522a2e33c1a9591a5878bd3941c53ba45c834 Mon Sep 17 00:00:00 2001 From: mposolda Date: Thu, 26 Jan 2017 21:32:15 +0100 Subject: [PATCH 01/18] KEYCLOAK-4285 Adapter tests for examples fail in Wildfly/EAP6 --- .../KeycloakArquillianExtension.java | 4 +- ...ycloakOSGiApplicationArchiveProcessor.java | 56 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakOSGiApplicationArchiveProcessor.java diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java index 310a3bc464c..105032e0d9d 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java @@ -18,6 +18,7 @@ package org.keycloak.testsuite.arquillian; import org.jboss.arquillian.container.spi.client.container.DeployableContainer; +import org.jboss.arquillian.container.osgi.OSGiApplicationArchiveProcessor; import org.jboss.arquillian.container.test.impl.enricher.resource.URLResourceProvider; import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor; import org.jboss.arquillian.container.test.spi.client.deployment.DeploymentScenarioGenerator; @@ -63,7 +64,8 @@ public class KeycloakArquillianExtension implements LoadableExtension { builder .override(ResourceProvider.class, URLResourceProvider.class, URLProvider.class) .override(ResourceProvider.class, CustomizableURLResourceProvider.class, URLProvider.class) - .override(ResourceProvider.class, ContainerCustomizableURLResourceProvider.class, URLProvider.class); + .override(ResourceProvider.class, ContainerCustomizableURLResourceProvider.class, URLProvider.class) + .override(ApplicationArchiveProcessor.class, OSGiApplicationArchiveProcessor.class, KeycloakOSGiApplicationArchiveProcessor.class); } diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakOSGiApplicationArchiveProcessor.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakOSGiApplicationArchiveProcessor.java new file mode 100644 index 00000000000..90d3b2e710e --- /dev/null +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakOSGiApplicationArchiveProcessor.java @@ -0,0 +1,56 @@ +/* + * Copyright 2016 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * 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.testsuite.arquillian; + +import org.jboss.arquillian.container.osgi.OSGiApplicationArchiveProcessor; +import org.jboss.arquillian.test.spi.TestClass; +import org.jboss.logging.Logger; +import org.jboss.shrinkwrap.api.Archive; + +/** + * @author Marek Posolda + */ +public class KeycloakOSGiApplicationArchiveProcessor extends OSGiApplicationArchiveProcessor { + + private static final Logger log = Logger.getLogger(KeycloakOSGiApplicationArchiveProcessor.class); + + // We want to ignore OSGI for exampleAdapter tests + @Override + public void process(Archive appArchive, TestClass testClass) { + Class clazz = testClass.getJavaClass(); + boolean isExampleAdapterTest = isExampleAdapterTest(clazz); + + if (isExampleAdapterTest) { + log.infof("Ignore OSGiApplicationArchiveProcessor for test %s", clazz.getName()); + } else { + super.process(appArchive, testClass); + } + } + + public static boolean isExampleAdapterTest(Class clazz) { + Class parent = clazz; + while (true) { + parent = parent.getSuperclass(); + if (parent == null) { + return false; + } else if (parent.getName().equals("org.keycloak.testsuite.adapter.AbstractExampleAdapterTest")) { + return true; + } + } + } +} From ad0630d04f50fdc9920b6dfc7be51fa57650532b Mon Sep 17 00:00:00 2001 From: Hynek Mlnarik Date: Mon, 30 Jan 2017 11:40:48 +0100 Subject: [PATCH 02/18] KEYCLOAK-4329 Fix NPE when not providing KeyInfo element in IdP initiated SSO SAML --- .../keycloak/saml/processing/api/util/KeyInfoTools.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/saml-core/src/main/java/org/keycloak/saml/processing/api/util/KeyInfoTools.java b/saml-core/src/main/java/org/keycloak/saml/processing/api/util/KeyInfoTools.java index be9bf51ddbd..69fc05cae04 100644 --- a/saml-core/src/main/java/org/keycloak/saml/processing/api/util/KeyInfoTools.java +++ b/saml-core/src/main/java/org/keycloak/saml/processing/api/util/KeyInfoTools.java @@ -35,6 +35,9 @@ public class KeyInfoTools { * @return The object or {@code null} if not found. */ public static T getContent(Iterable objects, Class clazz) { + if (objects == null) { + return null; + } for (Object o : objects) { if (clazz.isInstance(o)) { return (T) o; @@ -45,11 +48,11 @@ public class KeyInfoTools { public static KeyName getKeyName(KeyInfo keyInfo) { - return getContent(keyInfo.getContent(), KeyName.class); + return keyInfo == null ? null : getContent(keyInfo.getContent(), KeyName.class); } public static X509Data getX509Data(KeyInfo keyInfo) { - return getContent(keyInfo.getContent(), X509Data.class); + return keyInfo == null ? null : getContent(keyInfo.getContent(), X509Data.class); } public static X509Certificate getX509Certificate(KeyInfo keyInfo) { From 5c5b7a33d350a0db2774757fbb492e31d466808a Mon Sep 17 00:00:00 2001 From: mposolda Date: Mon, 30 Jan 2017 17:27:32 +0100 Subject: [PATCH 03/18] KEYCLOAK-4169 Add initial testsuite how-to --- .../integration-arquillian/HOW-TO-RUN.md | 163 ++++++++++++++++++ testsuite/integration-arquillian/README.md | 3 + .../karaf/common/install-features.sh | 9 +- .../AbstractFuseExampleAdapterTest.java | 1 + 4 files changed, 174 insertions(+), 2 deletions(-) create mode 100644 testsuite/integration-arquillian/HOW-TO-RUN.md diff --git a/testsuite/integration-arquillian/HOW-TO-RUN.md b/testsuite/integration-arquillian/HOW-TO-RUN.md new file mode 100644 index 00000000000..6b849ae56ce --- /dev/null +++ b/testsuite/integration-arquillian/HOW-TO-RUN.md @@ -0,0 +1,163 @@ +How To Run various testsuite configurations +=========================================== + +## Base steps + +It's recomended to build the workspace including distribution. + +```` +cd $KEYCLOAK_SOURCES +mvn clean install -DskipTests=true +cd distribution +mvn clean install +```` + +## Run adapter tests + +### Wildfly + +```` +# Prepare servers +mvn -f testsuite/integration-arquillian/servers/pom.xml clean install \ + -Pauth-server-wildfly \ + -Papp-server-wildfly + +# Run tests +mvn -f testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/pom.xml \ + clean install \ + -Pauth-server-wildfly \ + -Papp-server-wildfly +```` + +### JBoss Fuse 6.3 +---------------------------------------- +1) Download JBoss Fuse 6.3 to your filesystem. It can be downloaded from http://origin-repository.jboss.org/nexus/content/groups/m2-proxy/org/jboss/fuse/jboss-fuse-karaf +Assumed you downloaded `jboss-fuse-karaf-6.3.0.redhat-229.zip` + +2) Install to your local maven repository and change the properties according to your env (This step can be likely avoided if you somehow configure your local maven settings to point directly to Fuse repo): + +```` +mvn install:install-file \ + -DgroupId=org.jboss.fuse \ + -DartifactId=jboss-fuse-karaf \ + -Dversion=6.3.0.redhat-229 \ + -Dpackaging=zip \ + -Dfile=/mydownloads/jboss-fuse-karaf-6.3.0.redhat-229.zip +```` + +3) Prepare Fuse and run the tests (change props according to your environment, versions etc): + +```` +# Prepare Fuse server +mvn -f testsuite/integration-arquillian/servers \ + clean install \ + -Pauth-server-wildfly \ + -Papp-server-fuse63 \ + -Dfuse63.version=6.3.0.redhat-229 \ + -Dapp.server.karaf.update.config=true \ + -Dmaven.local.settings=$HOME/.m2/settings.xml \ + -Drepositories=,http://download.eng.bos.redhat.com/brewroot/repos/sso-7.1-build/latest/maven/ \ + -Dmaven.repo.local=$HOME/.m2/repository + +# Run the Fuse adapter tests +mvn -f testsuite/integration-arquillian/tests/other/adapters/karaf/fuse63/pom.xml \ + clean install \ + -Pauth-server-wildfly \ + -Papp-server-fuse63 \ + -Dfuse63.version=6.3.0.redhat-198 +```` + +### EAP6 with Hawtio + +1) Download JBoss EAP 6.4.0.GA zip + +2) Install to your local maven repository and change the properties according to your env (This step can be likely avoided if you somehow configure your local maven settings to point directly to EAP repo): + +```` +mvn install:install-file \ + -DgroupId=org.jboss.as \ + -DartifactId=jboss-as-dist \ + -Dversion=7.5.0.Final-redhat-21 \ + -Dpackaging=zip \ + -Dfile=/mydownloads/jboss-eap-6.4.0.zip +```` + +3) Download Fuse EAP installer (for example from http://origin-repository.jboss.org/nexus/content/groups/m2-proxy/com/redhat/fuse/eap/fuse-eap-installer/6.3.0.redhat-220/ ) + +4) Install previously downloaded file manually + +```` +mvn install:install-file \ + -DgroupId=com.redhat.fuse.eap \ + -DartifactId=fuse-eap-installer \ + -Dversion=6.3.0.redhat-220 \ + -Dpackaging=jar \ + -Dfile=/fuse-eap-installer-6.3.0.redhat-220.jar +```` + +5) Prepare EAP6 with Hawtio and run the test + +```` +# Prepare EAP6 and deploy hawtio +mvn -f testsuite/integration-arquillian/servers \ + clean install \ + -Pauth-server-wildfly \ + -Papp-server-eap6-fuse \ + -Dapp.server.jboss.version=7.5.0.Final-redhat-21 \ + -Dfuse.installer.version=6.3.0.redhat-220 + +# Run the test +mvn -f testsuite/integration-arquillian/tests/other/adapters/jboss/eap6-fuse/pom.xml \ + clean install \ + -Pauth-server-wildfly \ + -Papp-server-eap6-fuse +```` + +## Migration test + +### DB migration test + +This will: + - start Keycloak 1.9.8 + - import realm and some data to MySQL DB + - stop Keycloak 1.9.8 + - start latest KEycloak and update DB from 1.9.8 + - Do some test that data are correct + +1) Prepare MySQL DB and ensure that MySQL DB is empty. See [../../misc/DatabaseTesting.md](../../misc/DatabaseTesting.md) for some hints for locally prepare Docker MySQL image. + +2) Run the test (Update according to your DB connection): + +```` +export DB_HOST=localhost + +mvn -f testsuite/integration-arquillian/pom.xml \ + clean install \ + -Pauth-server-wildfly,jpa,auth-server-migration \ + -Dtest=MigrationTest \ + -Dmigration.mode=auto \ + -Dmigrated.auth.server.version=1.9.8.Final \ + -Djdbc.mvn.groupId=mysql \ + -Djdbc.mvn.version=5.1.29 \ + -Djdbc.mvn.artifactId=mysql-connector-java \ + -Dkeycloak.connectionsJpa.url=jdbc:mysql://$DB_HOST/keycloak \ + -Dkeycloak.connectionsJpa.user=keycloak \ + -Dkeycloak.connectionsJpa.password=keycloak +```` + +### JSON export/import migration test +This will + - start latest Keycloak and import the file, which was previously exported from Keycloak 1.9.8.Final + +```` +mvn -f testsuite/integration-arquillian/pom.xml \ + clean install \ + -Pauth-server-wildfly,migration-import \ + -Dtest=MigrationTest \ + -Dmigration.mode=import \ + -Dmigrated.auth.server.version=1.9.8.Final +```` + + + + diff --git a/testsuite/integration-arquillian/README.md b/testsuite/integration-arquillian/README.md index 965dead85b0..14ec0e1f12e 100644 --- a/testsuite/integration-arquillian/README.md +++ b/testsuite/integration-arquillian/README.md @@ -4,6 +4,9 @@ For overview see the **Modules Overview** section at the bottom of this README. +## How to run tests + +See the file [HOW-TO-RUN.md](HOW-TO-RUN.md) . ## Container Lifecycles diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh b/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh index b8cba84bed5..751219dd46c 100755 --- a/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh +++ b/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh @@ -25,7 +25,8 @@ do if "$UPDATE_CONFIG" == "true"; then echo "Updating Config" ./client $CLIENT_AUTH -f update-config.cli - if [ $? -ne 0 ]; then + if [ $? -ne 0 ]; then + echo "Call update-config.cli failed!"; RESULT=1; else ./client $CLIENT_AUTH config:list | grep org.ops4j.pax.url.mvn. @@ -34,12 +35,16 @@ do echo "Installing features." ./client $CLIENT_AUTH -f install-features.cli - if [ $? -ne 0 ]; then RESULT=1; fi + if [ $? -ne 0 ]; then + echo "Call install-features.cli failed!"; + RESULT=1; + fi if "$UPDATE_CONFIG" == "true"; then echo "Updating Config - Keycloak authentication" ./client $CLIENT_AUTH -f update-config-auth.cli if [ $? -ne 0 ]; then + echo "Call update-config-auth.cli failed!"; RESULT=1; fi fi diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractFuseExampleAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractFuseExampleAdapterTest.java index f21a48c27bc..d41b063dbb3 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractFuseExampleAdapterTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/example/AbstractFuseExampleAdapterTest.java @@ -116,6 +116,7 @@ public abstract class AbstractFuseExampleAdapterTest extends AbstractExampleAdap testRealmLoginPage.form().login("admin", "password"); assertCurrentUrlStartsWith(adminInterface); assertTrue(driver.getPageSource().contains("Hello admin!")); + assertTrue(driver.getPageSource().contains("This second sentence is returned from a Camel RestDSL endpoint")); customerListing.navigateTo(); customerListing.clickLogOut(); From acf2e30c2fa04e11c4e57a0e0e9eab4314607330 Mon Sep 17 00:00:00 2001 From: mposolda Date: Mon, 30 Jan 2017 22:19:36 +0100 Subject: [PATCH 04/18] Fix MigrationTest --- .../testsuite/migration/MigrationTest.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java index 4f6d6886abf..2e52077fdb8 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java @@ -361,14 +361,27 @@ public class MigrationTest extends AbstractKeycloakTest { } private void testOfflineTokenLogin() { - log.info("test login with old offline token"); - String oldOfflineToken = suiteContext.getMigrationContext().getOfflineToken(); - Assert.assertNotNull(oldOfflineToken); + if (isImportMigrationMode()) { + log.info("Skip offline token login test in the 'import' migrationMode"); + } else { + log.info("test login with old offline token"); + String oldOfflineToken = suiteContext.getMigrationContext().getOfflineToken(); + Assert.assertNotNull(oldOfflineToken); - oauth.realm(MIGRATION); - oauth.clientId("migration-test-client"); - OAuthClient.AccessTokenResponse response = oauth.doRefreshTokenRequest(oldOfflineToken, "b2c07929-69e3-44c6-8d7f-76939000b3e4"); - AccessToken accessToken = oauth.verifyToken(response.getAccessToken()); - assertEquals("migration-test-user", accessToken.getPreferredUsername()); + oauth.realm(MIGRATION); + oauth.clientId("migration-test-client"); + OAuthClient.AccessTokenResponse response = oauth.doRefreshTokenRequest(oldOfflineToken, "b2c07929-69e3-44c6-8d7f-76939000b3e4"); + AccessToken accessToken = oauth.verifyToken(response.getAccessToken()); + assertEquals("migration-test-user", accessToken.getPreferredUsername()); + } + } + + private String getMigrationMode() { + return System.getProperty("migration.mode"); + } + + private boolean isImportMigrationMode() { + String mode = getMigrationMode(); + return "import".equals(mode); } } From f92dd6bd160e8d31f60f3af321e1e32968a60ece Mon Sep 17 00:00:00 2001 From: mposolda Date: Tue, 31 Jan 2017 16:00:16 +0100 Subject: [PATCH 05/18] KEYCLOAK-4339 MigrationTest fails to run --- testsuite/integration-arquillian/HOW-TO-RUN.md | 14 +++++++------- .../arquillian/DeploymentTargetModifier.java | 18 ++++++++++++++++++ .../testsuite/migration/MigrationTest.java | 3 +++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/testsuite/integration-arquillian/HOW-TO-RUN.md b/testsuite/integration-arquillian/HOW-TO-RUN.md index 6b849ae56ce..84365eff501 100644 --- a/testsuite/integration-arquillian/HOW-TO-RUN.md +++ b/testsuite/integration-arquillian/HOW-TO-RUN.md @@ -64,7 +64,7 @@ mvn -f testsuite/integration-arquillian/tests/other/adapters/karaf/fuse63/pom.xm clean install \ -Pauth-server-wildfly \ -Papp-server-fuse63 \ - -Dfuse63.version=6.3.0.redhat-198 + -Dfuse63.version=6.3.0.redhat-229 ```` ### EAP6 with Hawtio @@ -117,23 +117,24 @@ mvn -f testsuite/integration-arquillian/tests/other/adapters/jboss/eap6-fuse/pom ### DB migration test -This will: +This test will: - start Keycloak 1.9.8 - import realm and some data to MySQL DB - stop Keycloak 1.9.8 - - start latest KEycloak and update DB from 1.9.8 + - start latest KEycloak, which automatically updates DB from 1.9.8 - Do some test that data are correct + 1) Prepare MySQL DB and ensure that MySQL DB is empty. See [../../misc/DatabaseTesting.md](../../misc/DatabaseTesting.md) for some hints for locally prepare Docker MySQL image. -2) Run the test (Update according to your DB connection): +2) Run the test (Update according to your DB connection, versions etc): ```` export DB_HOST=localhost mvn -f testsuite/integration-arquillian/pom.xml \ clean install \ - -Pauth-server-wildfly,jpa,auth-server-migration \ + -Pauth-server-wildfly,jpa,clean-jpa,auth-server-migration \ -Dtest=MigrationTest \ -Dmigration.mode=auto \ -Dmigrated.auth.server.version=1.9.8.Final \ @@ -146,8 +147,7 @@ mvn -f testsuite/integration-arquillian/pom.xml \ ```` ### JSON export/import migration test -This will - - start latest Keycloak and import the file, which was previously exported from Keycloak 1.9.8.Final +This will start latest Keycloak and import the realm JSON file, which was previously exported from Keycloak 1.9.8.Final ```` mvn -f testsuite/integration-arquillian/pom.xml \ diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/DeploymentTargetModifier.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/DeploymentTargetModifier.java index 3a4d0b97fc5..bd6e5a051f3 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/DeploymentTargetModifier.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/DeploymentTargetModifier.java @@ -35,12 +35,17 @@ import static org.keycloak.testsuite.arquillian.AppServerTestEnricher.getAppServ */ public class DeploymentTargetModifier extends AnnotationDeploymentScenarioGenerator { + // Will be replaced in runtime by real auth-server-container + public static final String AUTH_SERVER_CURRENT = "auth-server-current"; + protected final Logger log = Logger.getLogger(this.getClass()); @Override public List generate(TestClass testClass) { List deployments = super.generate(testClass); + checkAuthServerTestDeployment(deployments, testClass); + String appServerQualifier = getAppServerQualifier( testClass.getJavaClass()); @@ -56,4 +61,17 @@ public class DeploymentTargetModifier extends AnnotationDeploymentScenarioGenera return deployments; } + private void checkAuthServerTestDeployment(List descriptions, TestClass testClass) { + for (DeploymentDescription deployment : descriptions) { + if (deployment.getTarget() != null) { + String containerQualifier = deployment.getTarget().getName(); + if (AUTH_SERVER_CURRENT.equals(containerQualifier)) { + String authServerQualifier = AuthServerTestEnricher.AUTH_SERVER_CONTAINER; + log.infof("Setting target container for deployment %s.%s: %s", testClass.getName(), deployment.getName(), authServerQualifier); + deployment.setTarget(new TargetDescription(authServerQualifier)); + } + } + } + } + } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java index 2e52077fdb8..0526ab227f9 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/migration/MigrationTest.java @@ -23,6 +23,7 @@ import java.util.stream.Collectors; import javax.ws.rs.NotFoundException; import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.container.test.api.TargetsContainer; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Before; import org.junit.Test; @@ -52,6 +53,7 @@ import org.keycloak.representations.idm.authorization.PolicyRepresentation; import org.keycloak.storage.UserStorageProvider; import org.keycloak.testsuite.AbstractKeycloakTest; import org.keycloak.testsuite.Assert; +import org.keycloak.testsuite.arquillian.DeploymentTargetModifier; import org.keycloak.testsuite.arquillian.migration.Migration; import org.keycloak.testsuite.runonserver.RunHelpers; import org.keycloak.testsuite.runonserver.RunOnServerDeployment; @@ -78,6 +80,7 @@ public class MigrationTest extends AbstractKeycloakTest { private RealmResource masterRealm; @Deployment + @TargetsContainer(DeploymentTargetModifier.AUTH_SERVER_CURRENT) public static WebArchive deploy() { return RunOnServerDeployment.create(); } From 57c74e3f39ae15f021db1a675e312913c52fc656 Mon Sep 17 00:00:00 2001 From: Pedro Igor Date: Tue, 31 Jan 2017 13:10:25 -0200 Subject: [PATCH 06/18] [KEYCLOAK-4341] - Resources are not properly exported when exporting authorization settings --- .../main/java/org/keycloak/exportimport/util/ExportUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java b/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java index 29b89428bd0..403551fc3b4 100755 --- a/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java +++ b/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java @@ -371,7 +371,7 @@ public class ExportUtils { Set policyResources = policy.getResources(); if (!policyResources.isEmpty()) { - List resourceNames = scopes.stream().map(Scope::getName).collect(Collectors.toList()); + List resourceNames = policyResources.stream().map(Resource::getName).collect(Collectors.toList()); config.put("resources", JsonSerialization.writeValueAsString(resourceNames)); } From c705a8ffc80f610807a8b11000bf2fa6a4564a5b Mon Sep 17 00:00:00 2001 From: Pedro Igor Date: Tue, 31 Jan 2017 13:11:14 -0200 Subject: [PATCH 07/18] [KEYCLOAK-4340] - Exporting authorization settings is updating policies with wrong data --- .../java/org/keycloak/models/utils/ModelToRepresentation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server-spi-private/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java b/server-spi-private/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java index 0ca04006c4c..713025597fa 100755 --- a/server-spi-private/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java +++ b/server-spi-private/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java @@ -801,7 +801,7 @@ public class ModelToRepresentation { representation.setType(model.getType()); representation.setDecisionStrategy(model.getDecisionStrategy()); representation.setLogic(model.getLogic()); - representation.setConfig(model.getConfig()); + representation.setConfig(new HashMap<>(model.getConfig())); return representation; } From a7c3d1b8dfab7c506e5ab35c64d6adaa14139041 Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Wed, 1 Feb 2017 14:16:33 -0500 Subject: [PATCH 08/18] KEYCLOAK-4262 Split migration-domain script into two separate scripts --- ...omain.cli => migrate-domain-clustered.cli} | 125 +---------------- .../content/bin/migrate-domain-standalone.cli | 128 ++++++++++++++++++ .../other/server-config-migration/pom.xml | 5 +- 3 files changed, 132 insertions(+), 126 deletions(-) rename distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/{migrate-domain.cli => migrate-domain-clustered.cli} (52%) create mode 100644 distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-standalone.cli diff --git a/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain.cli b/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-clustered.cli similarity index 52% rename from distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain.cli rename to distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-clustered.cli index 0ed854e5ef8..d11e2b9f253 100644 --- a/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain.cli +++ b/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-clustered.cli @@ -1,9 +1,5 @@ embed-host-controller --domain-config=domain.xml -# Early versions of keycloak used "default" for the standalone profile name. -# Yours maybe be something completely different. -set standaloneProfile=auth-server-standalone - # Early versions of keycloak used "ha" for the clustered profile name. # Yours maybe be something completely different. set clusteredProfile=auth-server-clustered @@ -12,125 +8,6 @@ set clusteredProfile=auth-server-clustered set pathToJson=../domain/configuration/keycloak-server.json -echo *** Begin Migration of /profile=$standaloneProfile *** -echo - -# Migrate from 1.8.1 to 1.9.1 -if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=work/:read-resource - echo Adding local-cache=work to keycloak cache container... - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=work/:add(indexing=NONE,start=LAZY) - echo -end-if -# realmVersions cache deprecated in 2.1.0 -#if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:read-resource -# echo Adding local-cache=realmVersions to keycloak cache container... -# /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:add(indexing=NONE,start=LAZY) -# /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/component=transaction/:write-attribute(name=mode,value=BATCH) -# echo -#end-if - - -# Migrate from 1.9.1 to 1.9.2 -if (result == NONE) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=users/component=eviction/:read-attribute(name=strategy) - echo Adding eviction strategy to keycloak users cache container... - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=users/component=eviction/:write-attribute(name=strategy,value=LRU) - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=users/component=eviction/:write-attribute(name=max-entries,value=10000) - echo -end-if - -# Migrate from 1.9.2 to 1.9.8 -# NO CHANGES - -# Migrate from 1.9.8 to 2.0.0 -if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/:read-resource - echo Adding local-cache=authorization to keycloak cache container... - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/:add(indexing=NONE,start=LAZY) - echo -end-if -if (result == undefined) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/component=eviction/:read-attribute(name=strategy,include-defaults=false) - echo Updating authorization cache container.. - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/component=eviction/:write-attribute(name=strategy,value=LRU) - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/component=eviction/:write-attribute(name=max-entries,value=100) -end-if - -# Migrate from 2.0.0 to 2.1.0 -if (outcome == success) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:read-resource - echo Removing deprecated cache 'realmVersions' - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:remove - echo -end-if - -# Migrate kecloak-server.json (deprecated in 2.2.0) -if (result == []) of /profile=$standaloneProfile/subsystem=keycloak-server/:read-children-names(child-type=spi) - echo Migrating keycloak-server.json to keycloak-server subsystem... - /profile=$standaloneProfile/subsystem=keycloak-server/:migrate-json(file=$pathToJson) - echo -end-if - -# Find if we are using jpa or mongo -if (result == mongo) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=realm/:read-attribute(name=default-provider) - set persistenceProvider=mongo -else - set persistenceProvider=jpa -end-if - -# Migrate from 2.1.0 to 2.2.0 -if (result == update) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-get(name=properties,key=databaseSchema) - echo Updating connectionsJpa default properties... - /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-remove(name=properties,key=databaseSchema) - /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=initializeEmpty,value=true) - /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationStrategy,value=update) - /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationExport,value=${jboss.home.dir}/keycloak-database-update.sql) - echo -end-if -if (outcome == failed) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=userFederatedStorage/:read-resource - echo Adding spi=userFederatedStorage... - /profile=$standaloneProfile/subsystem=keycloak-server/spi=userFederatedStorage/:add(default-provider=$persistenceProvider) - echo -end-if -if (outcome == failed) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=jta-lookup/:read-resource - echo Adding spi=jta-lookup... - /profile=$standaloneProfile/subsystem=keycloak-server/spi=jta-lookup/:add(default-provider=${keycloak.jta.lookup.provider:jboss}) - /profile=$standaloneProfile/subsystem=keycloak-server/spi=jta-lookup/provider=jboss/:add(enabled=true) - echo -end-if - -# Migrate from 2.2.0 to 2.2.1 -# NO CHANGES - -# Migrate from 2.2.1 to 2.3.0 -if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/:read-resource - echo Adding local-cache=keys to keycloak cache container... - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/:add(indexing=NONE,start=LAZY) - echo -end-if -if (result == undefined) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=eviction/:read-attribute(name=strategy,include-defaults=false) - echo Updating eviction and expiration in local-cache=keys... - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=eviction/:write-attribute(name=strategy,value=LRU) - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=eviction/:write-attribute(name=max-entries,value=1000) - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=expiration/:write-attribute(name=max-idle,value=3600000) - echo -end-if -if (outcome == failed) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=publicKeyStorage/:read-resource - echo Adding spi=publicKeyStorage... - /profile=$standaloneProfile/subsystem=keycloak-server/spi=publicKeyStorage/:add - /profile=$standaloneProfile/subsystem=keycloak-server/spi=publicKeyStorage/provider=infinispan/:add(properties={minTimeBetweenRequests => "10"},enabled=true) - echo -end-if - -# Migrate from 2.3.0 to 2.4.0 -# NO CHANGES - -# Migrate from 2.4.0 to 2.5.0 -if (result == NONE) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realms/component=eviction/:read-attribute(name=strategy) - echo Adding eviction strategy to keycloak realms cache... - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realms/component=eviction/:write-attribute(name=strategy,value=LRU) - /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realms/component=eviction/:write-attribute(name=max-entries,value=10000) - echo -end-if - -echo *** End Migration of /profile=$standaloneProfile *** -echo echo echo *** Begin Migration of /profile=$clusteredProfile *** echo @@ -260,4 +137,4 @@ if (result == NONE) of /profile=$clusteredProfile/subsystem=infinispan/cache-con echo end-if -echo *** End Migration *** \ No newline at end of file +echo *** End Migration of /profile=$clusteredProfile *** \ No newline at end of file diff --git a/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-standalone.cli b/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-standalone.cli new file mode 100644 index 00000000000..b24819e3b0b --- /dev/null +++ b/distribution/feature-packs/server-feature-pack/src/main/resources/content/bin/migrate-domain-standalone.cli @@ -0,0 +1,128 @@ +embed-host-controller --domain-config=domain.xml + +# Early versions of keycloak used "default" for the standalone profile name. +# Yours maybe be something completely different. +set standaloneProfile=auth-server-standalone + +# keycloak-server.json is not normally on this path. +set pathToJson=../domain/configuration/keycloak-server.json + + +echo *** Begin Migration of /profile=$standaloneProfile *** +echo + +# Migrate from 1.8.1 to 1.9.1 +if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=work/:read-resource + echo Adding local-cache=work to keycloak cache container... + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=work/:add(indexing=NONE,start=LAZY) + echo +end-if +# realmVersions cache deprecated in 2.1.0 +#if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:read-resource +# echo Adding local-cache=realmVersions to keycloak cache container... +# /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:add(indexing=NONE,start=LAZY) +# /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/component=transaction/:write-attribute(name=mode,value=BATCH) +# echo +#end-if + + +# Migrate from 1.9.1 to 1.9.2 +if (result == NONE) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=users/component=eviction/:read-attribute(name=strategy) + echo Adding eviction strategy to keycloak users cache container... + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=users/component=eviction/:write-attribute(name=strategy,value=LRU) + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=users/component=eviction/:write-attribute(name=max-entries,value=10000) + echo +end-if + +# Migrate from 1.9.2 to 1.9.8 +# NO CHANGES + +# Migrate from 1.9.8 to 2.0.0 +if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/:read-resource + echo Adding local-cache=authorization to keycloak cache container... + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/:add(indexing=NONE,start=LAZY) + echo +end-if +if (result == undefined) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/component=eviction/:read-attribute(name=strategy,include-defaults=false) + echo Updating authorization cache container.. + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/component=eviction/:write-attribute(name=strategy,value=LRU) + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=authorization/component=eviction/:write-attribute(name=max-entries,value=100) +end-if + +# Migrate from 2.0.0 to 2.1.0 +if (outcome == success) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:read-resource + echo Removing deprecated cache 'realmVersions' + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realmVersions/:remove + echo +end-if + +# Migrate kecloak-server.json (deprecated in 2.2.0) +if (result == []) of /profile=$standaloneProfile/subsystem=keycloak-server/:read-children-names(child-type=spi) + echo Migrating keycloak-server.json to keycloak-server subsystem... + /profile=$standaloneProfile/subsystem=keycloak-server/:migrate-json(file=$pathToJson) + echo +end-if + +# Find if we are using jpa or mongo +if (result == mongo) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=realm/:read-attribute(name=default-provider) + set persistenceProvider=mongo +else + set persistenceProvider=jpa +end-if + +# Migrate from 2.1.0 to 2.2.0 +if (result == update) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-get(name=properties,key=databaseSchema) + echo Updating connectionsJpa default properties... + /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-remove(name=properties,key=databaseSchema) + /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=initializeEmpty,value=true) + /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationStrategy,value=update) + /profile=$standaloneProfile/subsystem=keycloak-server/spi=connectionsJpa/provider=default/:map-put(name=properties,key=migrationExport,value=${jboss.home.dir}/keycloak-database-update.sql) + echo +end-if +if (outcome == failed) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=userFederatedStorage/:read-resource + echo Adding spi=userFederatedStorage... + /profile=$standaloneProfile/subsystem=keycloak-server/spi=userFederatedStorage/:add(default-provider=$persistenceProvider) + echo +end-if +if (outcome == failed) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=jta-lookup/:read-resource + echo Adding spi=jta-lookup... + /profile=$standaloneProfile/subsystem=keycloak-server/spi=jta-lookup/:add(default-provider=${keycloak.jta.lookup.provider:jboss}) + /profile=$standaloneProfile/subsystem=keycloak-server/spi=jta-lookup/provider=jboss/:add(enabled=true) + echo +end-if + +# Migrate from 2.2.0 to 2.2.1 +# NO CHANGES + +# Migrate from 2.2.1 to 2.3.0 +if (outcome == failed) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/:read-resource + echo Adding local-cache=keys to keycloak cache container... + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/:add(indexing=NONE,start=LAZY) + echo +end-if +if (result == undefined) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=eviction/:read-attribute(name=strategy,include-defaults=false) + echo Updating eviction and expiration in local-cache=keys... + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=eviction/:write-attribute(name=strategy,value=LRU) + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=eviction/:write-attribute(name=max-entries,value=1000) + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=keys/component=expiration/:write-attribute(name=max-idle,value=3600000) + echo +end-if +if (outcome == failed) of /profile=$standaloneProfile/subsystem=keycloak-server/spi=publicKeyStorage/:read-resource + echo Adding spi=publicKeyStorage... + /profile=$standaloneProfile/subsystem=keycloak-server/spi=publicKeyStorage/:add + /profile=$standaloneProfile/subsystem=keycloak-server/spi=publicKeyStorage/provider=infinispan/:add(properties={minTimeBetweenRequests => "10"},enabled=true) + echo +end-if + +# Migrate from 2.3.0 to 2.4.0 +# NO CHANGES + +# Migrate from 2.4.0 to 2.5.0 +if (result == NONE) of /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realms/component=eviction/:read-attribute(name=strategy) + echo Adding eviction strategy to keycloak realms cache... + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realms/component=eviction/:write-attribute(name=strategy,value=LRU) + /profile=$standaloneProfile/subsystem=infinispan/cache-container=keycloak/local-cache=realms/component=eviction/:write-attribute(name=max-entries,value=10000) + echo +end-if + +echo *** End Migration of /profile=$standaloneProfile *** \ No newline at end of file diff --git a/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml b/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml index 7dd8cea1b3d..2b985d84cc1 100644 --- a/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml +++ b/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml @@ -24,7 +24,7 @@ org.keycloak.testsuite integration-arquillian-tests-other - 2.5.1.Final-SNAPSHOT + 2.5.4.Final-SNAPSHOT ../pom.xml @@ -323,7 +323,8 @@ - + + From b4e4cbcbaacfe24cc1554c119ba1fde50b6f3da3 Mon Sep 17 00:00:00 2001 From: Stan Silvert Date: Wed, 1 Feb 2017 14:38:52 -0500 Subject: [PATCH 09/18] KEYCLOAK-4262: Update pom version --- .../tests/other/server-config-migration/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml b/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml index 2b985d84cc1..559c60f80b3 100644 --- a/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml +++ b/testsuite/integration-arquillian/tests/other/server-config-migration/pom.xml @@ -24,7 +24,7 @@ org.keycloak.testsuite integration-arquillian-tests-other - 2.5.4.Final-SNAPSHOT + 3.0.0.CR1-SNAPSHOT ../pom.xml From ee62c52543a95023c54f8b059bfc24848a55e617 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Wed, 1 Feb 2017 14:01:10 +0100 Subject: [PATCH 10/18] KEYCLOAK-4338 KEYCLOAK-4331 Fixes to session iframe --- adapters/oidc/js/src/main/resources/keycloak.js | 7 +------ .../oidc/js/src/main/resources/login-status-iframe.html | 5 +++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/adapters/oidc/js/src/main/resources/keycloak.js b/adapters/oidc/js/src/main/resources/keycloak.js index f0cae4211ca..f5979ae0370 100755 --- a/adapters/oidc/js/src/main/resources/keycloak.js +++ b/adapters/oidc/js/src/main/resources/keycloak.js @@ -653,12 +653,7 @@ if (token) { kc.token = token; kc.tokenParsed = decodeToken(token); - - var sessionId = kc.realm + '/' + kc.tokenParsed.sub; - if (kc.tokenParsed.session_state) { - sessionId = sessionId + '/' + kc.tokenParsed.session_state; - } - kc.sessionId = sessionId; + kc.sessionId = kc.tokenParsed.session_state; kc.authenticated = true; kc.subject = kc.tokenParsed.sub; kc.realmAccess = kc.tokenParsed.realm_access; diff --git a/adapters/oidc/js/src/main/resources/login-status-iframe.html b/adapters/oidc/js/src/main/resources/login-status-iframe.html index f941663e4fa..b1012f7694a 100755 --- a/adapters/oidc/js/src/main/resources/login-status-iframe.html +++ b/adapters/oidc/js/src/main/resources/login-status-iframe.html @@ -53,7 +53,8 @@ req.send(); } else { if (clientId === init.clientId && origin === init.origin) { - if (sessionState === cookie) { + var c = cookie.split('/'); + if (sessionState === c[2]) { callback('unchanged'); } else { callback('changed'); @@ -81,7 +82,7 @@ var origin = event.origin; var data = event.data.split(' '); if (data.length != 2) { - event.source.postMessage('error', origin); + return; } var clientId = data[0]; From 9aa2dacec9b5c0933d6ef5b1b80385c242c5cb78 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Thu, 2 Feb 2017 10:57:03 +0100 Subject: [PATCH 11/18] KEYCLOAK-4366 Issues when keycloak.js is initialized with token --- .../oidc/js/src/main/resources/keycloak.js | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/adapters/oidc/js/src/main/resources/keycloak.js b/adapters/oidc/js/src/main/resources/keycloak.js index f5979ae0370..2def1e2a8e4 100755 --- a/adapters/oidc/js/src/main/resources/keycloak.js +++ b/adapters/oidc/js/src/main/resources/keycloak.js @@ -87,6 +87,10 @@ } kc.flow = initOptions.flow; } + + if (initOptions.timeSkew != null) { + kc.timeSkew = initOptions.timeSkew; + } } if (!kc.responseMode) { @@ -162,12 +166,8 @@ kc.onAuthSuccess && kc.onAuthSuccess(); initPromise.setSuccess(); }).error(function () { - kc.onAuthError && kc.onAuthError(); - if (initOptions.onLoad) { - onLoad(); - } else { - initPromise.setError(); - } + setToken(null, null, null); + initPromise.setSuccess(); }); }); } else { @@ -369,6 +369,11 @@ throw 'Not authenticated'; } + if (kc.timeSkew == null) { + console.info('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set'); + return true; + } + var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew; if (minValidity) { expiresIn -= minValidity; @@ -661,6 +666,9 @@ if (timeLocal) { kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat; + } + + if (kc.timeSkew != null) { console.info('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds'); if (kc.onTokenExpired) { @@ -672,11 +680,7 @@ kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn); } } - } else { - kc.updateToken(-1); } - } else if (refreshToken) { - kc.updateToken(-1); } else { delete kc.token; delete kc.tokenParsed; From 73cad40fb788eb92cccced02919bbc55cfcaf473 Mon Sep 17 00:00:00 2001 From: mposolda Date: Thu, 2 Feb 2017 22:21:18 +0100 Subject: [PATCH 12/18] KEYCLOAK-4364 Fix OpenLDAP issue with renaming DN --- .../idm/store/ldap/LDAPIdentityStore.java | 5 + .../storage/ldap/LDAPNoMSADTest.java | 163 ++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/ldap/LDAPNoMSADTest.java diff --git a/federation/ldap/src/main/java/org/keycloak/storage/ldap/idm/store/ldap/LDAPIdentityStore.java b/federation/ldap/src/main/java/org/keycloak/storage/ldap/idm/store/ldap/LDAPIdentityStore.java index 249a3a0e787..3151a3b19fc 100644 --- a/federation/ldap/src/main/java/org/keycloak/storage/ldap/idm/store/ldap/LDAPIdentityStore.java +++ b/federation/ldap/src/main/java/org/keycloak/storage/ldap/idm/store/ldap/LDAPIdentityStore.java @@ -124,6 +124,11 @@ public class LDAPIdentityStore implements IdentityStore { String rdnAttrVal = ldapObject.getAttributeAsString(rdnAttrName); + // Could be the case when RDN attribute of the target object is not included in Keycloak mappers + if (rdnAttrVal == null) { + return; + } + String oldRdnAttrVal = ldapObject.getDn().getFirstRdnAttrValue(); if (!oldRdnAttrVal.equals(rdnAttrVal)) { LDAPDn newLdapDn = ldapObject.getDn().getParentDn(); diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/ldap/LDAPNoMSADTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/ldap/LDAPNoMSADTest.java new file mode 100644 index 00000000000..917327ae6e5 --- /dev/null +++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/ldap/LDAPNoMSADTest.java @@ -0,0 +1,163 @@ +/* + * Copyright 2016 Red Hat, Inc. and/or its affiliates + * and other contributors as indicated by the @author tags. + * + * 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.testsuite.federation.storage.ldap; + +import java.util.List; +import java.util.Map; + +import org.jboss.logging.Logger; +import org.junit.Assert; +import org.junit.ClassRule; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.rules.RuleChain; +import org.junit.rules.TestRule; +import org.junit.runners.MethodSorters; +import org.keycloak.common.util.MultivaluedHashMap; +import org.keycloak.component.ComponentModel; +import org.keycloak.models.KeycloakSession; +import org.keycloak.models.LDAPConstants; +import org.keycloak.models.RealmModel; +import org.keycloak.models.UserModel; +import org.keycloak.services.managers.RealmManager; +import org.keycloak.storage.UserStorageProvider; +import org.keycloak.storage.UserStorageProviderModel; +import org.keycloak.storage.ldap.LDAPStorageProvider; +import org.keycloak.storage.ldap.LDAPStorageProviderFactory; +import org.keycloak.storage.ldap.idm.model.LDAPObject; +import org.keycloak.storage.ldap.mappers.LDAPStorageMapper; +import org.keycloak.testsuite.rule.KeycloakRule; +import org.keycloak.testsuite.rule.LDAPRule; + +/** + * Test for special scenarios, which don't work on MSAD (eg. renaming user RDN to "sn=john2" ) + * + * @author Marek Posolda + */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class LDAPNoMSADTest { + + private static final Logger log = Logger.getLogger(LDAPProvidersIntegrationTest.class); + + + // Skip this test on MSAD + private static LDAPRule ldapRule = new LDAPRule((Map ldapConfig) -> { + + String vendor = ldapConfig.get(LDAPConstants.VENDOR); + return (vendor.equals(LDAPConstants.VENDOR_ACTIVE_DIRECTORY)); + + }); + + private static ComponentModel ldapModel = null; + + + private static KeycloakRule keycloakRule = new KeycloakRule(new KeycloakRule.KeycloakSetup() { + + @Override + public void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) { + LDAPTestUtils.addLocalUser(manager.getSession(), appRealm, "marykeycloak", "mary@test.com", "password-app"); + + MultivaluedHashMap ldapConfig = LDAPTestUtils.getLdapRuleConfig(ldapRule); + ldapConfig.putSingle(LDAPConstants.SYNC_REGISTRATIONS, "true"); + ldapConfig.putSingle(LDAPConstants.EDIT_MODE, UserStorageProvider.EditMode.WRITABLE.toString()); + UserStorageProviderModel model = new UserStorageProviderModel(); + model.setLastSync(0); + model.setChangedSyncPeriod(-1); + model.setFullSyncPeriod(-1); + model.setName("test-ldap"); + model.setPriority(0); + model.setProviderId(LDAPStorageProviderFactory.PROVIDER_NAME); + model.setConfig(ldapConfig); + + ldapModel = appRealm.addComponentModel(model); + LDAPTestUtils.addZipCodeLDAPMapper(appRealm, ldapModel); + + // Delete all LDAP users and add some new for testing + LDAPStorageProvider ldapFedProvider = LDAPTestUtils.getLdapProvider(session, ldapModel); + LDAPTestUtils.removeAllLDAPUsers(ldapFedProvider, appRealm); + + LDAPObject john = LDAPTestUtils.addLDAPUser(ldapFedProvider, appRealm, "johnkeycloak", "John", "Doe", "john@email.org", null, "1234"); + LDAPTestUtils.updateLDAPPassword(ldapFedProvider, john, "Password1"); + + LDAPObject existing = LDAPTestUtils.addLDAPUser(ldapFedProvider, appRealm, "existing", "Existing", "Foo", "existing@email.org", null, "5678"); + + appRealm.getClientByClientId("test-app").setDirectAccessGrantsEnabled(true); + } + }); + + @ClassRule + public static TestRule chain = RuleChain + .outerRule(ldapRule) + .around(keycloakRule); + + + // KEYCLOAK-4364 + @Test + public void testUpdateWithUnmappedRdnAttribute() { + KeycloakSession session = keycloakRule.startSession(); + ComponentModel snMapper = null; + try { + // Create LDAP user with "sn" attribute in RDN like "sn=johnkeycloak2,ou=People,dc=domain,dc=com" + RealmModel appRealm = session.realms().getRealmByName("test"); + LDAPStorageProvider ldapProvider = LDAPTestUtils.getLdapProvider(session, ldapModel); + LDAPObject john2 = LDAPTestUtils.addLDAPUser(ldapProvider, appRealm, "johnkeycloak2", "john2", "Doe2", "john2@email.org", null, "4321"); + + john2.setRdnAttributeName("sn"); + ldapProvider.getLdapIdentityStore().update(john2); + + // Remove "sn" mapper + List components = appRealm.getComponents(ldapModel.getId(), LDAPStorageMapper.class.getName()); + for (ComponentModel mapper : components) { + if (mapper.getName().equals("last name")) { + snMapper = mapper; + break; + } + } + + Assert.assertNotNull(snMapper); + appRealm.removeComponent(snMapper); + } finally { + keycloakRule.stopSession(session, true); + } + + + // Try to update johnkeycloak2 user. It shouldn't try to update DN + session = keycloakRule.startSession(); + try { + RealmModel appRealm = session.realms().getRealmByName("test"); + UserModel johnkeycloak2 = session.users().getUserByUsername("johnkeycloak2", appRealm); + Assert.assertNotNull(johnkeycloak2); + + johnkeycloak2.setFirstName("foo2"); + johnkeycloak2.setLastName("foo"); + } finally { + keycloakRule.stopSession(session, true); + } + + // Re-create "sn" mapper back + session = keycloakRule.startSession(); + try { + RealmModel appRealm = session.realms().getRealmByName("test"); + snMapper.setId(null); + appRealm.addComponentModel(snMapper); + } finally { + keycloakRule.stopSession(session, true); + } + + } +} From f73aaef67a6d2fe2e3ca5b93b21fd45b22c914c0 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Fri, 3 Feb 2017 10:05:57 +0100 Subject: [PATCH 13/18] KEYCLOAK-4370 Prevent LDAP provider from being migrated twice --- .../updater/liquibase/custom/MigrateUserFedToComponent.java | 4 +++- .../liquibase/custom/PortLdapUserFedToComponentModel.java | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java index bf3e92d33f2..94cb5b12958 100644 --- a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java +++ b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/MigrateUserFedToComponent.java @@ -40,7 +40,9 @@ public class MigrateUserFedToComponent extends AbstractUserFedToComponent { protected void generateStatementsImpl() throws CustomChangeException { List factories = kcSession.getKeycloakSessionFactory().getProviderFactories(UserStorageProvider.class); for (ProviderFactory factory : factories) { - convertFedProviderToComponent(factory.getId(), null); + if (!factory.getId().equals(LDAPConstants.LDAP_PROVIDER)) { + convertFedProviderToComponent(factory.getId(), null); + } } } diff --git a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java index dc9e6073c3f..8d1e6795f48 100644 --- a/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java +++ b/model/jpa/src/main/java/org/keycloak/connections/jpa/updater/liquibase/custom/PortLdapUserFedToComponentModel.java @@ -27,7 +27,6 @@ public class PortLdapUserFedToComponentModel extends AbstractUserFedToComponent @Override protected void generateStatementsImpl() throws CustomChangeException { - String providerId = LDAPConstants.LDAP_PROVIDER; convertFedProviderToComponent(LDAPConstants.LDAP_PROVIDER, "org.keycloak.storage.ldap.mappers.LDAPStorageMapper"); } From 8a16ab52a98e26ad07b413a78969408b3c28930f Mon Sep 17 00:00:00 2001 From: mposolda Date: Fri, 3 Feb 2017 11:53:22 +0100 Subject: [PATCH 14/18] KEYCLOAK-4371 Offline Tokens still useless When SSO Session Max is Reached and normal userSession expired --- .../org/keycloak/services/managers/AuthenticationManager.java | 2 +- .../java/org/keycloak/testsuite/oauth/OfflineTokenTest.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java index 5d467da5f67..9646ecceb23 100755 --- a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java +++ b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java @@ -740,7 +740,7 @@ public class AuthenticationManager { if (!isSessionValid(realm, userSession)) { // Check if accessToken was for the offline session. if (!isCookie) { - UserSessionModel offlineUserSession = session.sessions().getUserSession(realm, token.getSessionState()); + UserSessionModel offlineUserSession = session.sessions().getOfflineUserSession(realm, token.getSessionState()); if (isOfflineSessionValid(realm, offlineUserSession)) { return new AuthResult(user, offlineUserSession, token); } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/OfflineTokenTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/OfflineTokenTest.java index f4cf19ca2ad..150ff6b3cbc 100755 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/OfflineTokenTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oauth/OfflineTokenTest.java @@ -465,6 +465,9 @@ public class OfflineTokenTest extends AbstractKeycloakTest { // Set the time offset, so that "normal" userSession expires setTimeOffset(86400); + // Remove expired sessions. This will remove "normal" userSession + testingClient.testing().removeUserSessions(appRealm.toRepresentation().getId()); + // Refresh with the offline token tokenResponse = oauth.doRefreshTokenRequest(tokenResponse.getRefreshToken(), "secret1"); From 5b5dc3e4422615e972c3354894b5eeba8431f5e2 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Mon, 30 Jan 2017 12:03:37 +0100 Subject: [PATCH 15/18] KEYCLOAK-4265 Social login tests --- .../integration-arquillian/HOW-TO-RUN.md | 47 ++++ .../jboss/common/keystore/keycloak.truststore | Bin 1857 -> 209371 bytes .../pages/AccountUpdateProfilePage.java | 8 + .../pages/LoginUpdateProfilePage.java | 18 +- .../testsuite/broker/SocialLoginTest.java | 232 ++++++++++++++++++ .../resources/keystore/keycloak.truststore | Bin 1857 -> 209371 bytes 6 files changed, 299 insertions(+), 6 deletions(-) create mode 100644 testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/SocialLoginTest.java diff --git a/testsuite/integration-arquillian/HOW-TO-RUN.md b/testsuite/integration-arquillian/HOW-TO-RUN.md index 84365eff501..b11455b6afa 100644 --- a/testsuite/integration-arquillian/HOW-TO-RUN.md +++ b/testsuite/integration-arquillian/HOW-TO-RUN.md @@ -159,5 +159,52 @@ mvn -f testsuite/integration-arquillian/pom.xml \ ```` +## Social Login +The social login tests require setup of all social networks including an example social user. These details can't be +shared as it would result in the clients and users eventually being blocked. By default these tests are skipped. + +To run the full test you need to configure clients in Google, Facebook, GitHub, Twitter, LinkedIn, Microsoft and +StackOverflow. See the server administration guide for details on how to do that. Further, you also need to create a +sample user that can login to the social network. + +The details should be added to a standard properties file. For some properties you can use shared common properties and +override when needed. Or you can specify these for all providers. All providers require at least clientId and +clientSecret (StackOverflow also requires clientKey). + +An example social.properties file looks like: + + common.username=sampleuser@example.org + common.password=commonpassword + common.profile.firstName=Foo + common.profile.lastName=Bar + common.profile.email=sampleuser@example.org + + google.clientId=asdfasdfasdfasdfsadf + google.clientSecret=zxcvzxcvzxcvzxcv + + facebook.clientId=asdfasdfasdfasdfsadf + facebook.clientSecret=zxcvzxcvzxcvzxcv + facebook.profile.lastName=Test + +In the example above the common username, password and profile are shared for all providers, but Facebook has a +different last name. + +Some providers actively block bots so you need to use a proper browser to test. Either Firefox or Chrome should work. + +To run the tests run: + + mvn -f testsuite/integration-arquillian/pom.xml \ + clean install \ + -Pauth-server-wildfly \ + -Dtest=SocialLoginTest \ + -Dbrowser=chrome \ + -Dsocial.config=/path/to/social.properties +## Different Browsers + +To run with Chrome add `-Dbrowser=chrome`. Depending on the Chrome version you have you may need to download the latest +chromedriver from https://sites.google.com/a/chromium.org/chromedriver/downloads and point to it with +`-Dwebdriver.chrome.driver=/path/to/chromedriver`. + + \ No newline at end of file diff --git a/testsuite/integration-arquillian/servers/auth-server/jboss/common/keystore/keycloak.truststore b/testsuite/integration-arquillian/servers/auth-server/jboss/common/keystore/keycloak.truststore index 2df5170f9b39756055850ed3ad0c5d012aab1402..da0f709f5a7e85c53c4d205b8ed72443d9a78172 100644 GIT binary patch literal 209371 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 Date: Tue, 7 Feb 2017 08:43:53 -0200 Subject: [PATCH 16/18] [KEYCLOAK-4373] - Adapter Feature Pack is missing keycloak-authz-client --- .../adapter-feature-pack/pom.xml | 7 ++++ .../keycloak-adapter-core/main/module.xml | 1 + .../keycloak-authz-client/main/module.xml | 41 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100755 distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-authz-client/main/module.xml diff --git a/distribution/feature-packs/adapter-feature-pack/pom.xml b/distribution/feature-packs/adapter-feature-pack/pom.xml index 9334e4e2c1d..dcda6ee4794 100755 --- a/distribution/feature-packs/adapter-feature-pack/pom.xml +++ b/distribution/feature-packs/adapter-feature-pack/pom.xml @@ -55,6 +55,13 @@ org.keycloak keycloak-undertow-adapter + + + + org.keycloak + keycloak-authz-client + + org.wildfly wildfly-feature-pack diff --git a/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-core/main/module.xml index 673b5cd906a..9603619bc0d 100755 --- a/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-core/main/module.xml +++ b/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-adapter-core/main/module.xml @@ -34,6 +34,7 @@ + diff --git a/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-authz-client/main/module.xml b/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-authz-client/main/module.xml new file mode 100755 index 00000000000..67cc62c3191 --- /dev/null +++ b/distribution/feature-packs/adapter-feature-pack/src/main/resources/modules/system/add-ons/keycloak/org/keycloak/keycloak-authz-client/main/module.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + From f3a552ac9dd24c4eb7e7d88a9683ad5fa820ff04 Mon Sep 17 00:00:00 2001 From: Frederik Libert Date: Tue, 7 Feb 2017 15:37:16 +0100 Subject: [PATCH 17/18] KEYCLOAK-4378 New user attribute is not added after first login from broker --- .../saml/mappers/UserAttributeMapper.java | 14 ++++++++----- .../AbstractUserAttributeMapperTest.java | 20 +++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/services/src/main/java/org/keycloak/broker/saml/mappers/UserAttributeMapper.java b/services/src/main/java/org/keycloak/broker/saml/mappers/UserAttributeMapper.java index 8a71493fe57..cf550ed513f 100755 --- a/services/src/main/java/org/keycloak/broker/saml/mappers/UserAttributeMapper.java +++ b/services/src/main/java/org/keycloak/broker/saml/mappers/UserAttributeMapper.java @@ -173,13 +173,17 @@ public class UserAttributeMapper extends AbstractIdentityProviderMapper { setIfNotEmpty(user::setLastName, attributeValuesInContext); } else { List currentAttributeValues = user.getAttributes().get(attribute); - if (attributeValuesInContext != null - && currentAttributeValues != null - && !CollectionUtil.collectionEquals(attributeValuesInContext, currentAttributeValues)) { - user.setAttribute(attribute, attributeValuesInContext); - } else if (attributeValuesInContext == null) { + if (attributeValuesInContext == null) { + // attribute no longer sent by brokered idp, remove it user.removeAttribute(attribute); + } else if (currentAttributeValues == null) { + // new attribute sent by brokered idp, add it + user.setAttribute(attribute, attributeValuesInContext); + } else if (!CollectionUtil.collectionEquals(attributeValuesInContext, currentAttributeValues)) { + // attribute sent by brokered idp has different values as before, update it + user.setAttribute(attribute, attributeValuesInContext); } + // attribute allready set } } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractUserAttributeMapperTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractUserAttributeMapperTest.java index b2af5ffca59..2e15ad16c5b 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractUserAttributeMapperTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractUserAttributeMapperTest.java @@ -233,4 +233,24 @@ public abstract class AbstractUserAttributeMapperTest extends AbstractBaseBroker .build() ); } + + @Test + public void testAddBasicMappingMultipleValues() { + testValueMapping(ImmutableMap.>builder() + .build(), + ImmutableMap.>builder() + .put(ATTRIBUTE_TO_MAP_NAME, ImmutableList.builder().add("second value").add("second value 2").build()) + .build() + ); + } + + @Test + public void testDeleteBasicMappingMultipleValues() { + testValueMapping(ImmutableMap.>builder() + .put(ATTRIBUTE_TO_MAP_NAME, ImmutableList.builder().add("second value").add("second value 2").build()) + .build(), + ImmutableMap.>builder() + .build() + ); + } } From 3de77b7be91b6cb6137fb4b29cfb0e26093abce0 Mon Sep 17 00:00:00 2001 From: Stian Thorgersen Date: Wed, 8 Feb 2017 14:35:32 +0100 Subject: [PATCH 18/18] KEYCLOAK-4008 Include checksums in download files --- distribution/downloads/assembly.xml | 33 ++ distribution/downloads/pom.xml | 357 ++---------------- .../src/main/java/CopyDependencies.java | 49 +++ .../downloads/src/main/resources/files | 33 ++ 4 files changed, 138 insertions(+), 334 deletions(-) create mode 100644 distribution/downloads/assembly.xml create mode 100644 distribution/downloads/src/main/java/CopyDependencies.java create mode 100644 distribution/downloads/src/main/resources/files diff --git a/distribution/downloads/assembly.xml b/distribution/downloads/assembly.xml new file mode 100644 index 00000000000..9d408d1448b --- /dev/null +++ b/distribution/downloads/assembly.xml @@ -0,0 +1,33 @@ + + + + server-dist + + + dir + + + + + ${localRepository}/org/keycloak + + **/*.zip + + + + diff --git a/distribution/downloads/pom.xml b/distribution/downloads/pom.xml index a1f114e2d3d..1a8a6fd3d41 100755 --- a/distribution/downloads/pom.xml +++ b/distribution/downloads/pom.xml @@ -25,16 +25,25 @@ keycloak-dist-downloads - pom + jar Keycloak Release Downloads - - - + + 1.8 + 1.8 + + + org.apache.maven.plugins + maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + + org.apache.maven.plugins maven-deploy-plugin @@ -43,342 +52,22 @@ - org.apache.maven.plugins - maven-dependency-plugin + org.codehaus.mojo + exec-maven-plugin server-downloads - install + package - copy + java - - - org.keycloak - keycloak-server-dist - zip - keycloak-${project.version}.zip - - - org.keycloak - keycloak-server-dist - tar.gz - keycloak-${project.version}.tar.gz - - - - org.keycloak - keycloak-demo-dist - zip - keycloak-demo-${project.version}.zip - - - org.keycloak - keycloak-demo-dist - tar.gz - keycloak-demo-${project.version}.tar.gz - - - - org.keycloak - keycloak-server-overlay - zip - keycloak-overlay-${project.version}.zip - - - org.keycloak - keycloak-server-overlay - tar.gz - keycloak-overlay-${project.version}.tar.gz - - - - org.keycloak - keycloak-proxy-dist - zip - keycloak-proxy-${project.version}.zip - - - - org.keycloak - keycloak-api-docs-dist - zip - keycloak-api-docs-${project.version}.zip - - - org.keycloak - keycloak-examples-dist - zip - keycloak-examples-${project.version}.zip - - - target/${project.version} - - - - - adapter-downloads - install - - copy - - - - - org.keycloak - keycloak-as7-adapter-dist - zip - - - org.keycloak - keycloak-as7-adapter-dist - tar.gz - - - - org.keycloak - keycloak-eap6-adapter-dist - zip - - - org.keycloak - keycloak-eap6-adapter-dist - tar.gz - - - - org.keycloak - keycloak-jetty81-adapter-dist - zip - - - org.keycloak - keycloak-jetty81-adapter-dist - tar.gz - - - - org.keycloak - keycloak-jetty91-adapter-dist - zip - - - org.keycloak - keycloak-jetty91-adapter-dist - tar.gz - - - - org.keycloak - keycloak-jetty92-adapter-dist - zip - - - org.keycloak - keycloak-jetty92-adapter-dist - tar.gz - - - - org.keycloak - keycloak-jetty93-adapter-dist - zip - - - org.keycloak - keycloak-jetty93-adapter-dist - tar.gz - - - - org.keycloak - keycloak-js-adapter-dist - zip - - - org.keycloak - keycloak-js-adapter-dist - tar.gz - - - - org.keycloak - keycloak-tomcat6-adapter-dist - zip - - - org.keycloak - keycloak-tomcat6-adapter-dist - tar.gz - - - - org.keycloak - keycloak-tomcat7-adapter-dist - zip - - - org.keycloak - keycloak-tomcat7-adapter-dist - tar.gz - - - - org.keycloak - keycloak-tomcat8-adapter-dist - zip - - - org.keycloak - keycloak-tomcat8-adapter-dist - tar.gz - - - - org.keycloak - keycloak-wf8-adapter-dist - zip - - - org.keycloak - keycloak-wf8-adapter-dist - tar.gz - - - - org.keycloak - keycloak-wildfly-adapter-dist - zip - - - org.keycloak - keycloak-wildfly-adapter-dist - tar.gz - - - - org.keycloak - keycloak-fuse-adapter-dist - zip - - - org.keycloak - keycloak-fuse-adapter-dist - tar.gz - - - target/${project.version}/adapters/keycloak-oidc - - - - saml-adapter-downloads - install - - copy - - - - - org.keycloak - keycloak-saml-as7-adapter-dist - zip - - - org.keycloak - keycloak-saml-as7-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-eap6-adapter-dist - zip - - - org.keycloak - keycloak-saml-eap6-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-jetty81-adapter-dist - zip - - - org.keycloak - keycloak-saml-jetty81-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-jetty92-adapter-dist - zip - - - org.keycloak - keycloak-saml-jetty92-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-jetty93-adapter-dist - zip - - - org.keycloak - keycloak-saml-jetty93-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-tomcat6-adapter-dist - zip - - - org.keycloak - keycloak-saml-tomcat6-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-tomcat7-adapter-dist - zip - - - org.keycloak - keycloak-saml-tomcat7-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-tomcat8-adapter-dist - zip - - - org.keycloak - keycloak-saml-tomcat8-adapter-dist - tar.gz - - - - org.keycloak - keycloak-saml-wildfly-adapter-dist - zip - - - org.keycloak - keycloak-saml-wildfly-adapter-dist - tar.gz - - - target/${project.version}/adapters/saml + CopyDependencies + + ${settings.localRepository} + ${project.build.directory} + ${project.version} + diff --git a/distribution/downloads/src/main/java/CopyDependencies.java b/distribution/downloads/src/main/java/CopyDependencies.java new file mode 100644 index 00000000000..6ab527e57b1 --- /dev/null +++ b/distribution/downloads/src/main/java/CopyDependencies.java @@ -0,0 +1,49 @@ +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; + +/** + * Created by st on 06.02.17. + */ +public class CopyDependencies { + + public static void main(String[] args) throws IOException { + String version = args[2]; + + Path repository = new File(args[0]).toPath().resolve("org").resolve("keycloak"); + Path targetRoot = new File(args[1]).toPath().resolve(version); + + BufferedReader br = new BufferedReader(new InputStreamReader(CopyDependencies.class.getResourceAsStream("files"))); + + Path target = targetRoot; + for (String l = br.readLine(); l != null; l = br.readLine()) { + + if (l.startsWith("./")) { + target = targetRoot.resolve(l.replace("./", "").replace('/', File.separatorChar)); + if (!target.toFile().isDirectory()) { + target.toFile().mkdirs(); + } + } else if (l.trim().length() > 0) { + String[] t = l.trim().split(":"); + + String artifactName = t[0]; + String destName = t.length == 1 ? artifactName : t[1]; + + File artifactDir = repository.resolve(artifactName).resolve(version).toFile(); + + for (File f : artifactDir.listFiles((file, name) -> name.contains(".tar.gz") || name.contains(".zip"))) { + Files.copy(f.toPath(), target.resolve(f.getName().replace(artifactName, destName)), StandardCopyOption.REPLACE_EXISTING); + } + + System.out.println(artifactName); + } + } + + br.close(); + } + +} diff --git a/distribution/downloads/src/main/resources/files b/distribution/downloads/src/main/resources/files new file mode 100644 index 00000000000..e88c8e99a78 --- /dev/null +++ b/distribution/downloads/src/main/resources/files @@ -0,0 +1,33 @@ +./ + keycloak-server-dist:keycloak + keycloak-demo-dist:keycloak-demo + keycloak-server-overlay:keycloak-overlay + keycloak-proxy-dist:keycloak-proxy + keycloak-api-docs-dist:keycloak-api-docs + keycloak-examples-dist:keycloak-examples + +./adapters/keycloak-oidc + keycloak-as7-adapter-dist + keycloak-eap6-adapter-dist + keycloak-jetty81-adapter-dist + keycloak-jetty91-adapter-dist + keycloak-jetty92-adapter-dist + keycloak-jetty93-adapter-dist + keycloak-js-adapter-dist + keycloak-tomcat6-adapter-dist + keycloak-tomcat7-adapter-dist + keycloak-tomcat8-adapter-dist + keycloak-wf8-adapter-dist + keycloak-wildfly-adapter-dist + keycloak-fuse-adapter-dist + +./adapters/saml + keycloak-saml-as7-adapter-dist + keycloak-saml-eap6-adapter-dist + keycloak-saml-jetty81-adapter-dist + keycloak-saml-jetty92-adapter-dist + keycloak-saml-jetty93-adapter-dist + keycloak-saml-tomcat6-adapter-dist + keycloak-saml-tomcat7-adapter-dist + keycloak-saml-tomcat8-adapter-dist + keycloak-saml-wildfly-adapter-dist \ No newline at end of file

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 testRealms) { + RealmRepresentation rep = RealmBuilder.create().name("social").build(); + List idps = new LinkedList<>(); + rep.setIdentityProviders(idps); + + idps.add(buildIdp("google")); + idps.add(buildIdp("facebook")); + idps.add(buildIdp("github")); + idps.add(buildIdp("twitter")); + idps.add(buildIdp("linkedin")); + idps.add(buildIdp("microsoft")); + idps.add(buildIdp("stackoverflow")); + + testRealms.add(rep); + } + + @Test + public void googleLogin() throws InterruptedException { + account.open("social"); + + loginPage.clickSocial("google"); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.id("Email"))); + + driver.findElement(By.id("Email")).sendKeys(config.getProperty("google.username", config.getProperty("common.username"))); + driver.findElement(By.id("next")).click(); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.id("Passwd"))); + + driver.findElement(By.id("Passwd")).sendKeys(config.getProperty("google.password", config.getProperty("common.password"))); + driver.findElement(By.id("signIn")).click(); + + Graphene.waitGui().until(ExpectedConditions.elementToBeClickable(By.id("submit_approve_access"))); + + driver.findElement(By.id("submit_approve_access")).click(); + + assertEquals(config.getProperty("google.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("google.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("google.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + @Test + public void faceBookLogin() { + account.open("social"); + + loginPage.clickSocial("facebook"); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.id("email"))); + driver.findElement(By.id("email")).sendKeys(config.getProperty("facebook.username", config.getProperty("common.username"))); + driver.findElement(By.id("pass")).sendKeys(config.getProperty("facebook.password", config.getProperty("common.password"))); + + driver.findElement(By.id("loginbutton")).click(); + + assertEquals(config.getProperty("facebook.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("facebook.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("facebook.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + @Test + public void githubLogin() { + account.open("social"); + + loginPage.clickSocial("github"); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.id("login_field"))); + driver.findElement(By.id("login_field")).sendKeys(config.getProperty("github.username", config.getProperty("common.username"))); + driver.findElement(By.id("password")).sendKeys(config.getProperty("github.password", config.getProperty("common.password"))); + + driver.findElement(By.name("commit")).click(); + + assertEquals(config.getProperty("github.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("github.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("github.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + @Test + public void twitterLogin() { + account.open("social"); + + loginPage.clickSocial("twitter"); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.id("username_or_email"))); + driver.findElement(By.id("username_or_email")).sendKeys(config.getProperty("twitter.username", config.getProperty("common.username"))); + driver.findElement(By.id("password")).sendKeys(config.getProperty("twitter.password", config.getProperty("common.password"))); + + driver.findElement(By.id("allow")).click(); + + assertTrue(updateProfilePage.isCurrent()); + + assertEquals(config.getProperty("twitter.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("twitter.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals("", updateProfilePage.getEmail()); + + updateProfilePage.update(null, null, "keycloakey@gmail.com"); + + assertEquals(config.getProperty("twitter.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("twitter.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("twitter.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + @Test + public void linkedinLogin() { + account.open("social"); + + loginPage.clickSocial("linkedin"); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.id("session_key-oauth2SAuthorizeForm"))); + driver.findElement(By.id("session_key-oauth2SAuthorizeForm")).sendKeys(config.getProperty("linkedin.username", config.getProperty("common.username"))); + driver.findElement(By.id("session_password-oauth2SAuthorizeForm")).sendKeys(config.getProperty("linkedin.password", config.getProperty("common.password"))); + + driver.findElement(By.name("authorize")).click(); + + assertEquals(config.getProperty("linkedin.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("linkedin.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("linkedin.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + @Test + public void microsoftLogin() { + account.open("social"); + + loginPage.clickSocial("microsoft"); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.name("loginfmt"))); + driver.findElement(By.name("loginfmt")).sendKeys(config.getProperty("microsoft.username", config.getProperty("common.username"))); + driver.findElement(By.xpath("//input[@value='Next']")).click(); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.name("passwd"))); + driver.findElement(By.name("passwd")).sendKeys(config.getProperty("microsoft.password", config.getProperty("common.password"))); + driver.findElement(By.xpath("//input[@value='Sign in']")).click(); + + assertEquals(config.getProperty("microsoft.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("microsoft.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("microsoft.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + @Test + public void stackoverflowLogin() { + account.open("social"); + + loginPage.clickSocial("stackoverflow"); + + Graphene.waitModel().until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@title='log in with Stack_Exchange']"))); + driver.findElement(By.xpath("//a[@title='log in with Stack_Exchange']")).click(); + + driver.switchTo().frame(driver.findElement(By.id("affiliate-signin-iframe"))); + + Graphene.waitGui().until(ExpectedConditions.visibilityOfElementLocated(By.name("email"))); + driver.findElement(By.name("email")).sendKeys(config.getProperty("stackoverflow.username", config.getProperty("common.username"))); + driver.findElement(By.name("password")).sendKeys(config.getProperty("stackoverflow.password", config.getProperty("common.password"))); + + driver.findElement(By.xpath("//input[@value='Sign In']")).click(); + + assertEquals(config.getProperty("stackoverflow.profile.firstName", config.getProperty("common.profile.firstName")), updateProfilePage.getFirstName()); + assertEquals(config.getProperty("stackoverflow.profile.lastName", config.getProperty("common.profile.lastName")), updateProfilePage.getLastName()); + assertEquals("", updateProfilePage.getEmail()); + + updateProfilePage.update(null, null, "keycloakey@gmail.com"); + + assertEquals(config.getProperty("stackoverflow.profile.firstName", config.getProperty("common.profile.firstName")), account.getFirstName()); + assertEquals(config.getProperty("stackoverflow.profile.lastName", config.getProperty("common.profile.lastName")), account.getLastName()); + assertEquals(config.getProperty("stackoverflow.profile.email", config.getProperty("common.profile.email")), account.getEmail()); + } + + private IdentityProviderRepresentation buildIdp(String id) { + IdentityProviderRepresentation idp = IdentityProviderBuilder.create().alias(id).providerId(id).build(); + idp.setEnabled(true); + idp.getConfig().put("clientId", config.getProperty(id + ".clientId")); + idp.getConfig().put("clientSecret", config.getProperty(id + ".clientSecret")); + if (id.equals("stackoverflow")) { + idp.getConfig().put("key", config.getProperty(id + ".clientKey")); + } + return idp; + } + +} diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/keystore/keycloak.truststore b/testsuite/integration-arquillian/tests/base/src/test/resources/keystore/keycloak.truststore index 2df5170f9b39756055850ed3ad0c5d012aab1402..da0f709f5a7e85c53c4d205b8ed72443d9a78172 100644 GIT binary patch literal 209371 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