KEYCLOAK-600 Users shouldn't be registered with Federation Provider on an import

This commit is contained in:
mposolda 2014-08-05 12:22:13 +02:00
parent 746da8f270
commit 76db33829b
4 changed files with 18 additions and 4 deletions

View file

@ -577,7 +577,8 @@ public class RepresentationToModel {
// Users // Users
public static UserModel createUser(KeycloakSession session, RealmModel newRealm, UserRepresentation userRep, Map<String, ApplicationModel> appMap) { public static UserModel createUser(KeycloakSession session, RealmModel newRealm, UserRepresentation userRep, Map<String, ApplicationModel> appMap) {
UserModel user = session.users().addUser(newRealm, userRep.getId(), userRep.getUsername(), false); // Import users just to user storage. Don't federate
UserModel user = session.userStorage().addUser(newRealm, userRep.getId(), userRep.getUsername(), false);
user.setEnabled(userRep.isEnabled()); user.setEnabled(userRep.isEnabled());
user.setEmail(userRep.getEmail()); user.setEmail(userRep.getEmail());
user.setFirstName(userRep.getFirstName()); user.setFirstName(userRep.getFirstName());

View file

@ -336,7 +336,7 @@ public class UserAdapter extends AbstractMongoAdapter<MongoUserEntity> implement
@Override @Override
public void setFederationLink(String link) { public void setFederationLink(String link) {
user.setFederationLink(link); user.setFederationLink(link);
updateUser();
} }
@Override @Override

View file

@ -7,6 +7,7 @@ import org.keycloak.models.UserFederationProvider;
import org.keycloak.models.UserModel; import org.keycloak.models.UserModel;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -16,6 +17,9 @@ import java.util.Set;
* @version $Revision: 1 $ * @version $Revision: 1 $
*/ */
public class DummyUserFederationProvider implements UserFederationProvider { public class DummyUserFederationProvider implements UserFederationProvider {
private static Map<String, UserModel> users = new HashMap<String, UserModel>();
@Override @Override
public UserModel proxy(UserModel local) { public UserModel proxy(UserModel local) {
return local; return local;
@ -23,11 +27,12 @@ public class DummyUserFederationProvider implements UserFederationProvider {
@Override @Override
public boolean synchronizeRegistrations() { public boolean synchronizeRegistrations() {
return false; return true;
} }
@Override @Override
public UserModel register(RealmModel realm, UserModel user) { public UserModel register(RealmModel realm, UserModel user) {
users.put(user.getUsername(), user);
return user; return user;
} }
@ -38,7 +43,7 @@ public class DummyUserFederationProvider implements UserFederationProvider {
@Override @Override
public UserModel getUserByUsername(RealmModel realm, String username) { public UserModel getUserByUsername(RealmModel realm, String username) {
return null; return users.get(username);
} }
@Override @Override

View file

@ -12,10 +12,14 @@ import org.keycloak.models.RealmModel;
import org.keycloak.models.RequiredCredentialModel; import org.keycloak.models.RequiredCredentialModel;
import org.keycloak.models.RoleModel; import org.keycloak.models.RoleModel;
import org.keycloak.models.SocialLinkModel; import org.keycloak.models.SocialLinkModel;
import org.keycloak.models.UserFederationProvider;
import org.keycloak.models.UserFederationProviderFactory;
import org.keycloak.models.UserFederationProviderModel; import org.keycloak.models.UserFederationProviderModel;
import org.keycloak.models.UserModel; import org.keycloak.models.UserModel;
import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.managers.RealmManager; import org.keycloak.services.managers.RealmManager;
import org.keycloak.testutils.DummyUserFederationProvider;
import org.keycloak.testutils.DummyUserFederationProviderFactory;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -203,6 +207,10 @@ public class ImportTest extends AbstractModelTest {
Assert.assertEquals("dummy", ldap.getProviderName()); Assert.assertEquals("dummy", ldap.getProviderName());
Assert.assertEquals(1, ldap.getPriority()); Assert.assertEquals(1, ldap.getPriority());
Assert.assertEquals("ldap://foo", ldap.getConfig().get("important.config")); Assert.assertEquals("ldap://foo", ldap.getConfig().get("important.config"));
// Assert that federation link wasn't created during import
UserFederationProviderFactory factory = (UserFederationProviderFactory)session.getKeycloakSessionFactory().getProviderFactory(UserFederationProvider.class, "dummy");
Assert.assertNull(factory.getInstance(session, null).getUserByUsername(realm, "wburke"));
} }
@Test @Test