keycloak-memoizeit
Changes
authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProvider.java 5(+3 -2)
authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java 4(+2 -2)
authentication/authentication-model/src/main/java/org/keycloak/authentication/model/AbstractModelAuthenticationProvider.java 11(+7 -4)
authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProvider.java 12(+6 -6)
examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProvider.java 5(+3 -2)
pom.xml 2(+1 -1)
Details
diff --git a/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProvider.java b/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProvider.java
index 542c994..f4ed95e 100644
--- a/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProvider.java
+++ b/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProvider.java
@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import org.keycloak.models.RealmModel;
+import org.keycloak.models.UserModel;
import org.keycloak.provider.Provider;
/**
@@ -36,11 +37,11 @@ public interface AuthenticationProvider extends Provider {
*
* @param realm
* @param configuration
- * @param username
+ * @param user Keycloak user, which will be registered on authentication provider side
* @return ID of newly created user (For example ID from LDAP)
* @throws AuthenticationProviderException if user creation couldn't happen
*/
- String registerUser(RealmModel realm, Map<String, String> configuration, String username) throws AuthenticationProviderException;
+ String registerUser(RealmModel realm, Map<String, String> configuration, UserModel user) throws AuthenticationProviderException;
/**
* Standard Authentication flow
diff --git a/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java b/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java
index b0d485b..d36cb24 100755
--- a/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java
+++ b/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java
@@ -118,7 +118,7 @@ public class AuthenticationProviderManager {
+ authUser.getProviderName() + " but is not linked with model user");
}
} else {
- String userIdInProvider = delegate.registerUser(realm, providerModel.getConfig(), user.getLoginName());
+ String userIdInProvider = delegate.registerUser(realm, providerModel.getConfig(), user);
authLink = new AuthenticationLinkModel(providerModel.getProviderName(), userIdInProvider);
user.setAuthenticationLink(authLink);
logger.infof("User '%s' registered in provider '%s' and linked", user.getLoginName(), providerModel.getProviderName());
@@ -143,7 +143,7 @@ public class AuthenticationProviderManager {
String username = user.getLoginName();
- // Update just those, which support password update
+ // Update just if password update is supported
if (providerModel.isPasswordUpdateSupported()) {
try {
AuthenticationProvider delegate = getProvider(providerName);
diff --git a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/AbstractModelAuthenticationProvider.java b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/AbstractModelAuthenticationProvider.java
index 730f3f4..ea20abc 100755
--- a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/AbstractModelAuthenticationProvider.java
+++ b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/AbstractModelAuthenticationProvider.java
@@ -30,11 +30,14 @@ public abstract class AbstractModelAuthenticationProvider implements Authenticat
}
@Override
- public String registerUser(RealmModel currentRealm, Map<String, String> config, String username) throws AuthenticationProviderException {
+ public String registerUser(RealmModel currentRealm, Map<String, String> config, UserModel user) throws AuthenticationProviderException {
RealmModel realm = getRealm(currentRealm, config);
- UserModel user = currentRealm.addUser(username);
- user.setEnabled(true);
- return user.getId();
+ UserModel newUser = realm.addUser(user.getLoginName());
+ newUser.setFirstName(user.getFirstName());
+ newUser.setLastName(user.getLastName());
+ newUser.setEmail(user.getEmail());
+ newUser.setEnabled(true);
+ return newUser.getId();
}
@Override
diff --git a/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProvider.java b/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProvider.java
index b2310ed..772f6da 100755
--- a/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProvider.java
+++ b/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProvider.java
@@ -7,6 +7,7 @@ import org.keycloak.authentication.AuthUser;
import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.authentication.AuthenticationProviderException;
import org.keycloak.models.RealmModel;
+import org.keycloak.models.UserModel;
import org.keycloak.picketlink.IdentityManagerProvider;
import org.picketlink.idm.IdentityManagementException;
import org.picketlink.idm.IdentityManager;
@@ -67,16 +68,15 @@ public class PicketlinkAuthenticationProvider implements AuthenticationProvider
}
@Override
- public String registerUser(RealmModel realm, Map<String, String> configuration, String username) throws AuthenticationProviderException {
+ public String registerUser(RealmModel realm, Map<String, String> configuration, UserModel user) throws AuthenticationProviderException {
IdentityManager identityManager = getIdentityManager(realm);
try {
- User picketlinkUser = new User(username);
+ User picketlinkUser = new User(user.getLoginName());
+ picketlinkUser.setFirstName(user.getFirstName());
+ picketlinkUser.setLastName(user.getLastName());
+ picketlinkUser.setEmail(user.getEmail());
identityManager.add(picketlinkUser);
-
- // Hack needed due to ActiveDirectory bug in Picketlink TODO: Remove once https://issues.jboss.org/browse/PLINK-485 fixed and updated in keycloak master
- picketlinkUser = BasicModel.getUser(identityManager, picketlinkUser.getLoginName());
-
return picketlinkUser.getId();
} catch (IdentityManagementException ie) {
throw convertIDMException(ie);
diff --git a/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProvider.java b/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProvider.java
index da10edd..9b83ec0 100644
--- a/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProvider.java
+++ b/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProvider.java
@@ -11,6 +11,7 @@ import org.keycloak.authentication.AuthUser;
import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.authentication.AuthenticationProviderException;
import org.keycloak.models.RealmModel;
+import org.keycloak.models.UserModel;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -45,9 +46,9 @@ public class PropertiesAuthenticationProvider implements AuthenticationProvider
}
@Override
- public String registerUser(RealmModel realm, Map<String, String> configuration, String username) throws AuthenticationProviderException {
+ public String registerUser(RealmModel realm, Map<String, String> configuration, UserModel user) throws AuthenticationProviderException {
// Registration ignored
- return username;
+ return user.getLoginName();
}
@Override
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index cd19d16..66927cb 100755
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
<resteasy.version.eap.6.3>2.3.7.Final</resteasy.version.eap.6.3>
<resteasy.version.latest>3.0.8.Final</resteasy.version.latest>
<undertow.version>1.0.15.Final</undertow.version>
- <picketlink.version>2.6.0.CR2</picketlink.version>
+ <picketlink.version>2.6.0.CR5</picketlink.version>
<picketbox.ldap.version>1.0.2.Final</picketbox.ldap.version>
<mongo.driver.version>2.11.3</mongo.driver.version>
<jboss.logging.version>3.1.1.GA</jboss.logging.version>
diff --git a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
index 76b8876..dd4197e 100755
--- a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
@@ -276,7 +276,7 @@ public class AuthenticationManager {
user.setLastName(authUser.getLastName());
user.setEmail(authUser.getEmail());
user.setAuthenticationLink(new AuthenticationLinkModel(authUser.getProviderName(), authUser.getId()));
- logger.info("User " + authUser.getUsername() + " created and linked with provider " + authUser.getProviderName());
+ logger.info("User " + authUser.getUsername() + " created in Keycloak and linked with provider " + authUser.getProviderName());
} else {
logger.warn("User " + username + " not found");
return AuthenticationStatus.INVALID_USER;