[New] Persisting of SSO Users, enforcing SSO users have state REMOTE

This commit is contained in:
Robert von Burg 2019-02-22 16:35:32 +01:00
parent 7d87589ce2
commit e1326bdc95
3 changed files with 13 additions and 2 deletions

View File

@ -39,6 +39,7 @@ import li.strolch.privilege.xml.CertificateStubsDomWriter;
import li.strolch.privilege.xml.CertificateStubsSaxReader;
import li.strolch.privilege.xml.CertificateStubsSaxReader.CertificateStub;
import li.strolch.utils.collections.Tuple;
import li.strolch.utils.dbc.DBC;
import li.strolch.utils.helper.AesCryptoHelper;
import li.strolch.utils.helper.StringHelper;
import org.slf4j.Logger;
@ -1183,6 +1184,17 @@ public class DefaultPrivilegeHandler implements PrivilegeHandler {
throw new IllegalStateException("The SSO Handler is not configured!");
User user = this.ssoHandler.authenticateSingleSignOn(data);
DBC.PRE.assertEquals("SSO Users must have UserState.REMOTE!", UserState.REMOTE, user.getUserState());
// persist this user
User internalUser = this.persistenceHandler.getUser(user.getUsername());
if (internalUser == null)
this.persistenceHandler.addUser(user);
else
this.persistenceHandler.replaceUser(user);
if (this.autoPersistOnUserChangesData)
this.persistenceHandler.persist();
// get 2 auth tokens
String authToken = this.encryptionHandler.nextToken();

View File

@ -28,5 +28,4 @@ public interface SingleSignOnHandler {
* if the SSO can not be performed with the given data
*/
User authenticateSingleSignOn(Object data) throws PrivilegeException;
}

View File

@ -24,6 +24,6 @@ public class DummySsoHandler implements SingleSignOnHandler {
Set<String> roles = Arrays.stream(map.get("roles").split(",")).map(String::trim).collect(Collectors.toSet());
Map<String, String> properties = new HashMap<>();
return new User(map.get("userId"), map.get("username"), null, null, null, -1, -1, map.get("firstName"),
map.get("lastName"), UserState.ENABLED, roles, Locale.ENGLISH, properties);
map.get("lastName"), UserState.REMOTE, roles, Locale.ENGLISH, properties);
}
}