62 List<UserStorageProviderModel> federationProviders = realm.getUserStorageProviders();
63 for (UserStorageProviderModel fedProvider : federationProviders) {
65 if (fedProvider.getProviderId().equals(LDAPConstants.LDAP_PROVIDER)) {
66 fedProvider =
new UserStorageProviderModel(fedProvider);
67 MultivaluedHashMap<String, String> config = fedProvider.getConfig();
70 if (config.get(LDAPConstants.SEARCH_SCOPE) == null) {
71 config.putSingle(LDAPConstants.SEARCH_SCOPE, String.valueOf(SearchControls.SUBTREE_SCOPE));
74 List<String> usersDn = config.remove(
"userDnSuffix");
75 if (usersDn != null && !usersDn.isEmpty() && config.getFirst(LDAPConstants.USERS_DN) == null) {
76 config.put(LDAPConstants.USERS_DN, usersDn);
79 String usernameLdapAttribute = config.getFirst(LDAPConstants.USERNAME_LDAP_ATTRIBUTE);
80 if (usernameLdapAttribute != null && config.getFirst(LDAPConstants.RDN_LDAP_ATTRIBUTE) == null) {
81 if (usernameLdapAttribute.equalsIgnoreCase(LDAPConstants.SAM_ACCOUNT_NAME)) {
82 config.putSingle(LDAPConstants.RDN_LDAP_ATTRIBUTE, LDAPConstants.CN);
84 config.putSingle(LDAPConstants.RDN_LDAP_ATTRIBUTE, usernameLdapAttribute);
88 if (config.getFirst(LDAPConstants.UUID_LDAP_ATTRIBUTE) == null) {
89 String uuidAttrName = LDAPConstants.getUuidAttributeName(config.getFirst(LDAPConstants.VENDOR));
90 config.putSingle(LDAPConstants.UUID_LDAP_ATTRIBUTE, uuidAttrName);
93 realm.updateComponent(fedProvider);
96 List<ComponentModel> mappers = realm.getComponents(fedProvider.getId());
97 if (mappers.isEmpty()) {
98 ProviderFactory ldapFactory = session.getKeycloakSessionFactory().getProviderFactory(UserStorageProvider.class, LDAPConstants.LDAP_PROVIDER);
99 if (ldapFactory != null) {
100 ((ComponentFactory) ldapFactory).onCreate(session, realm, fedProvider);