in src/main/java/org/apache/sling/jcr/base/AbstractSlingRepository2.java [228:251]
protected Session createServiceSession(final Iterable<String> servicePrincipalNames, final String workspaceName) throws RepositoryException {
Set<Principal> principals = new HashSet<>();
for (final String pName : servicePrincipalNames) {
if (pName != null && !pName.isEmpty()) {
principals.add(new Principal() {
@Override
public String getName() {
return pName;
}
});
}
};
Subject subject = new Subject(true, principals, Collections.emptySet(), Collections.emptySet());
try {
return Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() {
@Override
public Session run() throws Exception {
return AbstractSlingRepository2.this.getRepository().login(null, workspaceName);
}
}, null);
} catch (PrivilegedActionException e) {
throw new RepositoryException("failed to retrieve service session.", e);
}
}