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);
}