diff --git a/common/src/main/java/org/keycloak/common/util/MultivaluedMap.java b/common/src/main/java/org/keycloak/common/util/MultivaluedMap.java index 54cdfe49c77..5fa8b471bb5 100644 --- a/common/src/main/java/org/keycloak/common/util/MultivaluedMap.java +++ b/common/src/main/java/org/keycloak/common/util/MultivaluedMap.java @@ -59,6 +59,10 @@ public interface MultivaluedMap extends Map> { return Optional.ofNullable(get(key)).filter(l -> !l.isEmpty()).map(l -> l.get(0)).orElse(null); } + default V getFirstOrDefault(K key, V defaultValue) { + return Optional.ofNullable(getFirst(key)).orElse(defaultValue); + } + public default List getList(K key) { return compute(key, (k, v) -> v != null ? v : createListInstance()); } diff --git a/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPConfig.java b/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPConfig.java index 92f6b1a776c..c9eac258940 100644 --- a/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPConfig.java +++ b/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPConfig.java @@ -252,6 +252,9 @@ public class LDAPConfig { return binaryAttributeNames; } + public boolean isConnectionTrace() { + return Boolean.parseBoolean(config.getFirstOrDefault(LDAPConstants.CONNECTION_TRACE, Boolean.FALSE.toString())); + } @Override public boolean equals(Object obj) { diff --git a/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPStorageProviderFactory.java b/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPStorageProviderFactory.java index 684bf09d509..87c8fbb6bcb 100755 --- a/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPStorageProviderFactory.java +++ b/federation/ldap/src/main/java/org/keycloak/storage/ldap/LDAPStorageProviderFactory.java @@ -211,6 +211,10 @@ public class LDAPStorageProviderFactory implements UserStorageProviderFactory + + } + fieldId="kc-connection-trace" + hasNoPaddingTop + > + ( + field.onChange([`${value}`])} + isChecked={field.value[0] === "true"} + label={t("on")} + labelOff={t("off")} + aria-label={t("connectionTrace")} + /> + )} + > +