public static UserFederationProviderModel findUserFederationProviderById(String fedProviderId, RealmModel realm) { for (UserFederationProviderModel fedProvider : realm.getUserFederationProviders()) { if (fedProviderId.equals(fedProvider.getId())) { return fedProvider; } } return null; }
public PartitionManager getPartitionManager(UserFederationProviderModel model) { PartitionManagerContext context = partitionManagers.get(model.getId()); // Ldap config might have changed for the realm. In this case, we must re-initialize Map<String, String> config = model.getConfig(); if (context == null || !config.equals(context.config)) { logLDAPConfig(model.getId(), config); PartitionManager manager = createPartitionManager(config); context = new PartitionManagerContext(config, manager); partitionManagers.put(model.getId(), context); } return context.partitionManager; }
/** * Ensure that displayName of myProvider (if not null) is unique and there is no other provider with same displayName in the list. * * @param displayName to check for duplications * @param myProvider provider, which is excluded from the list (if present) * @param federationProviders * @throws ModelDuplicateException if there is other provider with same displayName */ public static void ensureUniqueDisplayName(String displayName, UserFederationProviderModel myProvider, List<UserFederationProviderModel> federationProviders) throws ModelDuplicateException { if (displayName != null) { for (UserFederationProviderModel federationProvider : federationProviders) { if (myProvider != null && (myProvider.equals(federationProvider) || (myProvider.getId() != null && myProvider.getId().equals(federationProvider.getId())))) { continue; } if (displayName.equals(federationProvider.getDisplayName())) { throw new ModelDuplicateException("There is already existing federation provider with display name: " + displayName); } } } }
protected UserFederationProvider getFederationLink(RealmModel realm, UserModel user) { if (user.getFederationLink() == null) return null; for (UserFederationProviderModel fed : realm.getUserFederationProviders()) { if (fed.getId().equals(user.getFederationLink())) { return getFederationProvider(fed); } } return null; }
Set<UserFederationMapperModel> mappers = realm.getUserFederationMappersByFederationProvider(fedProvider.getId()); if (mappers.isEmpty()) { UserFederationProviderFactory ldapFactory = (UserFederationProviderFactory) session.getKeycloakSessionFactory().getProviderFactory(UserFederationProvider.class, LDAPConstants.LDAP_PROVIDER);
protected UserModel registerWithFederation(RealmModel realm, UserModel user) { for (UserFederationProviderModel federation : realm.getUserFederationProviders()) { UserFederationProvider fed = getFederationProvider(federation); if (fed.synchronizeRegistrations()) { user.setFederationLink(federation.getId()); UserModel registered = fed.register(realm, user); managedUsers.put(registered.getId(), registered); return registered; } } return user; }
public void migrate(KeycloakSession session) { List<RealmModel> realms = session.realms().getRealms(); for (RealmModel realm : realms) { List<UserFederationProviderModel> federationProviders = realm.getUserFederationProviders(); for (UserFederationProviderModel fedProvider : federationProviders) { if (fedProvider.getProviderName().equals(LDAPConstants.LDAP_PROVIDER)) { Map<String, String> config = fedProvider.getConfig(); if (isActiveDirectory(config)) { // Create mapper for MSAD account controls if (realm.getUserFederationMapperByName(fedProvider.getId(), "MSAD account controls") == null) { UserFederationMapperModel mapperModel = KeycloakModelUtils.createUserFederationMapperModel("MSAD account controls", fedProvider.getId(), LDAPConstants.MSAD_USER_ACCOUNT_CONTROL_MAPPER); realm.addUserFederationMapper(mapperModel); } } } } } }
public static UserFederationProviderRepresentation toRepresentation(UserFederationProviderModel model) { UserFederationProviderRepresentation rep = new UserFederationProviderRepresentation(); rep.setId(model.getId()); rep.setConfig(model.getConfig()); rep.setProviderName(model.getProviderName()); rep.setPriority(model.getPriority()); rep.setDisplayName(model.getDisplayName()); rep.setFullSyncPeriod(model.getFullSyncPeriod()); rep.setChangedSyncPeriod(model.getChangedSyncPeriod()); rep.setLastSync(model.getLastSync()); return rep; }
public static UserFederationMapperModel toModel(RealmModel realm, UserFederationMapperRepresentation rep) { UserFederationMapperModel model = new UserFederationMapperModel(); model.setId(rep.getId()); model.setName(rep.getName()); model.setFederationMapperType(rep.getFederationMapperType()); model.setConfig(rep.getConfig()); UserFederationProviderModel fedProvider = KeycloakModelUtils.findUserFederationProviderByDisplayName(rep.getFederationProviderDisplayName(), realm); if (fedProvider == null) { throw new ModelException("Couldn't find federation provider with display name [" + rep.getFederationProviderDisplayName() + "] referenced from mapper [" + rep.getName()); } model.setFederationProviderId(fedProvider.getId()); return model; }
for (UserFederationProviderModel providerModel : providerModels) { if (providerName.equals(providerModel.getDisplayName())) { Set<UserFederationMapperModel> toDelete = newRealm.getUserFederationMappersByFederationProvider(providerModel.getId()); for (UserFederationMapperModel mapperModel : toDelete) { newRealm.removeUserFederationMapper(mapperModel);