SLING-9663 - Properly set authentication information when performing pre-authenticated login
Minor cleanups
diff --git a/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepository.java b/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepository.java
index 0e70d9b..22db92f 100644
--- a/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepository.java
+++ b/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepository.java
@@ -18,10 +18,8 @@
*/
package org.apache.sling.jcr.oak.server.internal;
-import java.security.Principal;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -66,31 +64,22 @@
@Override
protected Session createAdministrativeSession(String workspace) throws RepositoryException {
// TODO: use principal provider to retrieve admin principal
- Set<? extends Principal> principals = singleton(new AdminPrincipal() {
- @Override
- public String getName() {
- return OakSlingRepository.this.adminId;
- }
- });
- AuthInfo authInfo = new AuthInfoImpl(this.adminId, Collections.<String, Object> emptyMap(), principals);
- Subject subject = new Subject(true, principals, singleton(authInfo), Collections.<Object> emptySet());
- Session adminSession;
+ Set<AdminPrincipal> principals = singleton(() -> OakSlingRepository.this.adminId);
+ AuthInfo authInfo = new AuthInfoImpl(this.adminId, emptyMap(), principals);
+ Subject subject = new Subject(true, principals, singleton(authInfo), emptySet());
try {
- adminSession = Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() {
+ return Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() {
@Override
public Session run() throws Exception {
Map<String, Object> attrs = new HashMap<String, Object>();
attrs.put("oak.refresh-interval", 0);
// TODO OAK-803: Backwards compatibility of long-lived sessions
- JackrabbitRepository repo = (JackrabbitRepository) getRepository();
- return repo.login(null, null, attrs);
+ return getJackrabbitRepository().login(null, null, attrs);
}
}, null);
} catch (PrivilegedActionException e) {
throw new RepositoryException("failed to retrieve admin session.", e);
}
-
- return adminSession;
}
@Override
@@ -114,4 +103,8 @@
throw new RepositoryException("failed to retrieve service session.", e);
}
}
+
+ private JackrabbitRepository getJackrabbitRepository() {
+ return (JackrabbitRepository) super.getRepository();
+ }
}