keycloak-uncached

fix

10/25/2016 3:40:24 PM

Details

diff --git a/server-spi/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java b/server-spi/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java
index d2fc26d..82bd50a 100755
--- a/server-spi/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java
+++ b/server-spi/src/main/java/org/keycloak/models/utils/ModelToRepresentation.java
@@ -622,7 +622,9 @@ public class ModelToRepresentation {
         providerRep.setStoreToken(identityProviderModel.isStoreToken());
         providerRep.setTrustEmail(identityProviderModel.isTrustEmail());
         providerRep.setAuthenticateByDefault(identityProviderModel.isAuthenticateByDefault());
-        providerRep.setConfig(identityProviderModel.getConfig());
+        Map<String, String> config = new HashMap<>();
+        config.putAll(identityProviderModel.getConfig());
+        providerRep.setConfig(config);
         providerRep.setAddReadTokenRoleOnCreate(identityProviderModel.isAddReadTokenRoleOnCreate());
 
         String firstBrokerLoginFlowId = identityProviderModel.getFirstBrokerLoginFlowId();
diff --git a/server-spi/src/main/java/org/keycloak/models/utils/RepresentationToModel.java b/server-spi/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
index ca00244..b972cda 100755
--- a/server-spi/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
+++ b/server-spi/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
@@ -1762,9 +1762,18 @@ public class RepresentationToModel {
             component.setSubType(rep.getSubType());
         }
 
+        Map<String, ProviderConfigProperty> providerConfiguration = null;
+        if (!internal) {
+            providerConfiguration = ComponentUtil.getComponentConfigProperties(session, component);
+        }
+
         if (rep.getConfig() != null) {
             Set<String> keys = new HashSet<>(rep.getConfig().keySet());
             for (String k : keys) {
+                if (!internal && !providerConfiguration.containsKey(k)) {
+                    break;
+                }
+
                 List<String> values = rep.getConfig().get(k);
                 if (values == null || values.isEmpty() || values.get(0) == null || values.get(0).trim().isEmpty()) {
                     component.getConfig().remove(k);
diff --git a/server-spi/src/main/java/org/keycloak/models/utils/StripSecretsUtils.java b/server-spi/src/main/java/org/keycloak/models/utils/StripSecretsUtils.java
index 26f5adc..306d367 100644
--- a/server-spi/src/main/java/org/keycloak/models/utils/StripSecretsUtils.java
+++ b/server-spi/src/main/java/org/keycloak/models/utils/StripSecretsUtils.java
@@ -50,7 +50,6 @@ public class StripSecretsUtils {
                     next.setValue(Collections.singletonList(ComponentRepresentation.SECRET_VALUE));
                 }
             } else {
-                itr.remove();
             }
         }
         return rep;
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/UserStorageTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/UserStorageTest.java
index 6e79d69..a2b2636 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/UserStorageTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/federation/storage/UserStorageTest.java
@@ -132,7 +132,7 @@ public class UserStorageTest {
 
     }
 
-    @Test
+    //@Test
     public void testIDE() throws Exception {
         Thread.sleep(100000000);
     }