This is an automated email from the ASF dual-hosted git repository. baedke pushed a commit to branch issue/oak-11199-2 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/issue/oak-11199-2 by this push: new 312741de89 OAK-11199 getSubject is supported only if a security manager is allowed 312741de89 is described below commit 312741de89a31e0df34589e16b1c2612ded6ebd5 Author: Manfred Baedke <manfred.bae...@gmail.com> AuthorDate: Mon Dec 9 18:24:11 2024 +0100 OAK-11199 getSubject is supported only if a security manager is allowed --- .../external/impl/jmx/Delegatee.java | 3 +- .../external/AbstractExternalAuthTest.java | 3 +- .../principal/ExternalIdentityImporterTest.java | 3 +- .../AccessControlManagerLimitedSystemUserTest.java | 3 +- .../impl/ReadablePathsAccessControlTest.java | 15 ++-- .../jackrabbit/oak/benchmark/AbstractTest.java | 3 +- .../jackrabbit/oak/benchmark/CugOakTest.java | 3 +- .../jackrabbit/oak/benchmark/LoginSystemTest.java | 3 +- .../oak/commons/Java23Compatability.java | 93 ++++++++++++++++++++++ .../observation/ChangeCollectorProviderTest.java | 3 +- .../LoginContextProviderImplTest.java | 3 +- .../oak/security/authentication/PreAuthTest.java | 13 +-- .../authentication/user/LoginModuleImplTest.java | 3 +- .../permission/RepoPolicyTreePermissionTest.java | 3 +- .../security/user/CacheValidatorProviderTest.java | 3 +- .../security/user/CachedGroupPrincipalTest.java | 3 +- .../user/CachedPrincipalMembershipReaderTest.java | 3 +- .../oak/security/user/PasswordExpiryAdminTest.java | 3 +- .../oak/security/user/UserInitializerTest.java | 5 +- .../user/UserPrincipalProviderWithCacheTest.java | 3 +- .../security/authentication/preauthentication.md | 2 +- .../apache/jackrabbit/j2ee/IndexInitializer.java | 3 +- .../security/authentication/L9_NullLoginTest.java | 3 +- .../principalbased/AbstractPrincipalBasedTest.java | 3 +- .../oak/composite/blueGreen/Persistence.java | 3 +- oak-security-spi/pom.xml | 5 ++ .../authentication/AbstractLoginModule.java | 3 +- 27 files changed, 159 insertions(+), 37 deletions(-) diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java index cf8157a3be..6c7b3b70d9 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java @@ -23,6 +23,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.plugins.value.jcr.ValueFactoryImpl; import org.apache.jackrabbit.oak.spi.security.SecurityProvider; @@ -107,7 +108,7 @@ final class Delegatee { int batchSize) { ContentSession systemSession; try { - systemSession = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repository.login(null, null)); + systemSession = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repository.login(null, null)); } catch (PrivilegedActionException e) { throw new SyncRuntimeException(ERROR_CREATE_DELEGATEE, e); } diff --git a/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java b/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java index 3fdc930c3a..7acbf31849 100644 --- a/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java +++ b/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.collections.CollectionUtils; import org.apache.jackrabbit.oak.spi.security.SecurityProvider; import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject; @@ -213,7 +214,7 @@ public abstract class AbstractExternalAuthTest extends AbstractSecurityTest { @NotNull protected Root getSystemRoot() throws Exception { if (systemRoot == null) { - systemSession = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null)); + systemSession = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null)); systemRoot = systemSession.getLatestRoot(); } return systemRoot; diff --git a/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityImporterTest.java b/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityImporterTest.java index c46e3a951c..2a587a01c6 100644 --- a/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityImporterTest.java +++ b/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityImporterTest.java @@ -27,6 +27,7 @@ import javax.jcr.SimpleCredentials; import javax.security.auth.Subject; import org.apache.jackrabbit.api.JackrabbitRepository; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.jcr.Jcr; import org.apache.jackrabbit.oak.query.QueryEngineSettings; import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; @@ -88,7 +89,7 @@ public class ExternalIdentityImporterTest { Session createSession(Repository repo, boolean isSystem) throws Exception { if (isSystem) { - return Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<Session>) () -> repo.login(null, null)); + return Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<Session>) () -> repo.login(null, null)); } else { return repo.login(new SimpleCredentials(UserConstants.DEFAULT_ADMIN_ID, UserConstants.DEFAULT_ADMIN_ID.toCharArray())); } diff --git a/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/AccessControlManagerLimitedSystemUserTest.java b/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/AccessControlManagerLimitedSystemUserTest.java index da697b6625..56a0d9ca2e 100644 --- a/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/AccessControlManagerLimitedSystemUserTest.java +++ b/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/AccessControlManagerLimitedSystemUserTest.java @@ -20,6 +20,7 @@ import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.oak.api.AuthInfo; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.spi.security.authentication.AuthInfoImpl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -62,7 +63,7 @@ public class AccessControlManagerLimitedSystemUserTest extends AccessControlMana Set<Principal> principals = Set.of(testPrincipal); AuthInfo authInfo = new AuthInfoImpl(UID, Collections.emptyMap(), principals); Subject subject = new Subject(true, principals, Set.of(authInfo), Set.of()); - return Subject.doAsPrivileged(subject, (PrivilegedExceptionAction<Root>) () -> getContentRepository().login(null, null).getLatestRoot(), null); + return Java23Compatability.doAsPrivileged(subject, (PrivilegedExceptionAction<Root>) () -> getContentRepository().login(null, null).getLatestRoot(), null); } void grant(@NotNull Principal principal, @Nullable String path, @NotNull String... privNames) throws Exception { diff --git a/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/ReadablePathsAccessControlTest.java b/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/ReadablePathsAccessControlTest.java index 68b68cd472..86c80aecf2 100644 --- a/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/ReadablePathsAccessControlTest.java +++ b/oak-authorization-principalbased/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/ReadablePathsAccessControlTest.java @@ -22,6 +22,7 @@ import org.apache.jackrabbit.guava.common.collect.Iterators; import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager; import org.apache.jackrabbit.oak.api.ContentSession; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.CollectionUtils; import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration; @@ -84,7 +85,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { @Test public void testHasPrivilege() throws Exception { - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); Set<Principal> principals = Collections.singleton(testPrincipal); @@ -99,7 +100,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { @Test public void testNotHasPrivilege() throws Exception { - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); Set<Principal> principals = Collections.singleton(testPrincipal); @@ -140,7 +141,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { @Test public void testGetPrivileges() throws Exception { - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); Privilege[] expected = privilegesFromNames(JCR_READ); @@ -152,7 +153,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { @Test(expected = PathNotFoundException.class) public void testGetPrivilegesAtRoot() throws Exception { - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); testAcMgr.getPrivileges(ROOT_PATH); } @@ -186,7 +187,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { @Test(expected = AccessDeniedException.class) public void testGetEffectivePoliciesLimitedAccess() throws Exception { - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); testAcMgr.getEffectivePolicies(readablePaths.next()); } @@ -201,7 +202,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { root.commit(); // test-session can read-ac at readable path but cannot access principal-based policy - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); Set<AccessControlPolicy> effective = ImmutableSet.copyOf(testAcMgr.getEffectivePolicies(path)); @@ -220,7 +221,7 @@ public class ReadablePathsAccessControlTest extends AbstractPrincipalBasedTest { root.commit(); // test-session can read-ac at readable path and at principal-based policy - try (ContentSession cs = Subject.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { + try (ContentSession cs = Java23Compatability.doAsPrivileged(getTestSubject(), (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null)) { PrincipalBasedAccessControlManager testAcMgr = new PrincipalBasedAccessControlManager(getMgrProvider(cs.getLatestRoot()), getFilterProvider()); Set<AccessControlPolicy> effective = CollectionUtils.toSet(testAcMgr.getEffectivePolicies(path)); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java index ce8264b7d7..cac3dc66cc 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java @@ -37,6 +37,7 @@ import org.apache.jackrabbit.guava.common.base.Joiner; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; import org.apache.commons.math3.stat.descriptive.SynchronizedDescriptiveStatistics; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.Profiler; import org.apache.jackrabbit.oak.fixture.RepositoryFixture; import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject; @@ -588,7 +589,7 @@ public abstract class AbstractTest<T> extends Benchmark implements CSVResultGene protected Session loginSubject(@NotNull Subject subject) { try { - return Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { + return Java23Compatability.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { @Override public Session run() throws Exception { return getRepository().login(null, null); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java index 53ad214caf..3e417f4688 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java @@ -29,6 +29,7 @@ import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.fixture.JcrCreator; import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture; import org.apache.jackrabbit.oak.fixture.RepositoryFixture; @@ -89,7 +90,7 @@ public class CugOakTest extends CugTest { if (singleSession) { readSession = cs; } else { - readSession = Subject.doAs(subject, new PrivilegedAction<ContentSession>() { + readSession = Java23Compatability.doAs(subject, new PrivilegedAction<ContentSession>() { @Override public ContentSession run() { try { diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LoginSystemTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LoginSystemTest.java index 5e3d291103..a072d5c0a1 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LoginSystemTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/LoginSystemTest.java @@ -25,6 +25,7 @@ import javax.jcr.Session; import javax.security.auth.Subject; import org.apache.jackrabbit.core.security.SystemPrincipal; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl; import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject; @@ -46,7 +47,7 @@ public class LoginSystemTest extends AbstractLoginTest { public void runTest() throws RepositoryException { for (int i = 0; i < COUNT; i++) { try { - Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { + Java23Compatability.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { @Override public Session run() throws Exception { return getRepository().login(null, null); diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Java23Compatability.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Java23Compatability.java new file mode 100644 index 0000000000..322169ac0b --- /dev/null +++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Java23Compatability.java @@ -0,0 +1,93 @@ +package org.apache.jackrabbit.oak.commons; + +import javax.security.auth.Subject; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.security.AccessControlContext; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; +import java.util.concurrent.Callable; + +public class Java23Compatability { + + static Method current, callAs; + + static { + try { + current = Subject.class.getMethod("current", Subject.class); + callAs = Subject.class.getMethod("callAs", Subject.class, Callable.class); + } catch (NoSuchMethodException ignored) {} + } + + public static Subject getSubject() { + Subject result; + if (current != null) { + try { + result = (Subject) current.invoke(null); + } catch (InvocationTargetException | IllegalAccessException e) { + throw new SecurityException(e); + } + } else { + result = Subject.getSubject(AccessController.getContext()); + } + return result; + } + + public static <T> T doAs(Subject subject, PrivilegedAction<T> action) { + T result; + if (callAs != null) { + try { + result = (T) callAs.invoke(subject, action); + } catch (InvocationTargetException | IllegalAccessException e) { + throw new SecurityException(e); + } + } else { + result = Subject.doAs(subject, action); + } + return result; + } + + public static <T> T doAsPrivileged(Subject subject, PrivilegedAction<T> action, AccessControlContext acc) { + T result; + if (callAs != null) { + try { + result = (T) callAs.invoke(subject, action); + } catch (InvocationTargetException | IllegalAccessException e) { + throw new SecurityException(e); + } + } else { + result = Subject.doAsPrivileged(subject, action, acc); + } + return result; + } + + public static <T> T doAs(Subject subject, PrivilegedExceptionAction<T> action) throws PrivilegedActionException { + T result; + if (callAs != null) { + try { + result = (T) callAs.invoke(subject, action); + } catch (InvocationTargetException | IllegalAccessException e) { + throw new SecurityException(e); + } + } else { + result = Subject.doAs(subject, action); + } + return result; + } + + public static <T> T doAsPrivileged(Subject subject, PrivilegedExceptionAction<T> action, AccessControlContext acc) throws PrivilegedActionException { + T result; + if (callAs != null) { + try { + result = (T) callAs.invoke(subject, action); + } catch (InvocationTargetException | IllegalAccessException e) { + throw new SecurityException(e); + } + } else { + result = Subject.doAsPrivileged(subject, action, acc); + } + return result; + } +} diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java index 21c4630ddc..64c8d075d8 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/observation/ChangeCollectorProviderTest.java @@ -48,6 +48,7 @@ import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.InitialContent; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder; import org.apache.jackrabbit.oak.spi.commit.CommitContext; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; @@ -142,7 +143,7 @@ public class ChangeCollectorProviderTest { .with(getSecurityProvider()); contentRepository = oak.createContentRepository(); - session = Subject.doAs(SystemSubject.INSTANCE, new PrivilegedExceptionAction<ContentSession>() { + session = Java23Compatability.doAs(SystemSubject.INSTANCE, new PrivilegedExceptionAction<ContentSession>() { @Override public ContentSession run() throws LoginException, NoSuchWorkspaceException { return contentRepository.login(null, null); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java index c94b7076f8..d04f8aed4d 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/LoginContextProviderImplTest.java @@ -33,6 +33,7 @@ import javax.security.auth.login.ConfigurationSpi; import javax.security.auth.login.LoginException; import org.apache.jackrabbit.oak.AbstractSecurityTest; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; import org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration; import org.apache.jackrabbit.oak.spi.security.authentication.GuestLoginModule; @@ -121,7 +122,7 @@ public class LoginContextProviderImplTest extends AbstractSecurityTest { @Test public void testGetPreAuthLoginContext() { Subject subject = new Subject(true, Set.of(), Set.of(), Set.of()); - LoginContext ctx = Subject.doAs(subject, (PrivilegedAction<LoginContext>) () -> { + LoginContext ctx = Java23Compatability.doAs(subject, (PrivilegedAction<LoginContext>) () -> { try { return lcProvider.getLoginContext(null, null); } catch (LoginException e) { diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/PreAuthTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/PreAuthTest.java index 57577fa598..e7f5e6d6e9 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/PreAuthTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/PreAuthTest.java @@ -30,6 +30,7 @@ import javax.security.auth.login.LoginException; import org.apache.jackrabbit.oak.AbstractSecurityTest; import org.apache.jackrabbit.oak.api.AuthInfo; import org.apache.jackrabbit.oak.api.ContentSession; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.spi.security.authentication.AuthInfoImpl; import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject; import org.jetbrains.annotations.Nullable; @@ -66,7 +67,7 @@ public class PreAuthTest extends AbstractSecurityTest { @Test public void testValidSubject() throws Exception { final Subject subject = new Subject(true, principals, Collections.<Object>emptySet(), Collections.<Object>emptySet()); - ContentSession cs = Subject.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { + ContentSession cs = Java23Compatability.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { @Override public @Nullable ContentSession run() { try { @@ -93,7 +94,7 @@ public class PreAuthTest extends AbstractSecurityTest { public void testValidSubjectWithCredentials() throws Exception { Set<SimpleCredentials> publicCreds = Collections.singleton(new SimpleCredentials("testUserId", new char[0])); final Subject subject = new Subject(false, principals, publicCreds, Collections.<Object>emptySet()); - ContentSession cs = Subject.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { + ContentSession cs = Java23Compatability.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { @Override public @Nullable ContentSession run() { try { @@ -120,7 +121,7 @@ public class PreAuthTest extends AbstractSecurityTest { public void testValidReadSubjectWithCredentials() throws Exception { Set<SimpleCredentials> publicCreds = Collections.singleton(new SimpleCredentials("testUserId", new char[0])); final Subject subject = new Subject(true, principals, publicCreds, Collections.<Object>emptySet()); - ContentSession cs = Subject.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { + ContentSession cs = Java23Compatability.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { @Override public @Nullable ContentSession run() { try { @@ -148,7 +149,7 @@ public class PreAuthTest extends AbstractSecurityTest { AuthInfo info = new AuthInfoImpl("testUserId", Collections.<String, Object>emptyMap(), Collections.<Principal>emptySet()); Set<AuthInfo> publicCreds = Collections.singleton(info); final Subject subject = new Subject(false, Collections.singleton(new TestPrincipal()), publicCreds, Collections.<Object>emptySet()); - ContentSession cs = Subject.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { + ContentSession cs = Java23Compatability.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { @Override public @Nullable ContentSession run() { try { @@ -171,7 +172,7 @@ public class PreAuthTest extends AbstractSecurityTest { @Test public void testSubjectAndCredentials() throws Exception { final Subject subject = new Subject(true, principals, Collections.<Object>emptySet(), Collections.<Object>emptySet()); - ContentSession cs = Subject.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { + ContentSession cs = Java23Compatability.doAsPrivileged(subject, new PrivilegedAction<ContentSession>() { @Override public @Nullable ContentSession run() { ContentSession cs; @@ -204,7 +205,7 @@ public class PreAuthTest extends AbstractSecurityTest { @Test public void testSystemSubject() throws Exception { - ContentSession cs = Subject.doAsPrivileged(SystemSubject.INSTANCE, new PrivilegedAction<ContentSession>() { + ContentSession cs = Java23Compatability.doAsPrivileged(SystemSubject.INSTANCE, new PrivilegedAction<ContentSession>() { @Override public @Nullable ContentSession run() { try { diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java index 6f2e98a492..209623d434 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImplTest.java @@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.junit.LogCustomizer; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder; @@ -674,7 +675,7 @@ public class LoginModuleImplTest extends AbstractSecurityTest { public void testLoginLogoutPreexistingReadonlySubject() throws Exception { createTestUser(); Subject subject = new Subject(true, Collections.singleton(() -> "JMXPrincipal: foo"), Collections.EMPTY_SET, Collections.EMPTY_SET); - Subject.doAs(subject, (PrivilegedExceptionAction<Void>) () -> { + Java23Compatability.doAs(subject, (PrivilegedExceptionAction<Void>) () -> { LogCustomizer logCustomizer = LogCustomizer .forLogger("org.apache.jackrabbit.oak.core.ContentSessionImpl") .enable(Level.ERROR) diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/RepoPolicyTreePermissionTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/RepoPolicyTreePermissionTest.java index d936435286..d0aee10b18 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/RepoPolicyTreePermissionTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/RepoPolicyTreePermissionTest.java @@ -30,6 +30,7 @@ import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState; import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; @@ -77,7 +78,7 @@ public class RepoPolicyTreePermissionTest extends AbstractSecurityTest implement accessSession = createTestSession(); Subject notAllowedSubject = new Subject(true, Set.of(EveryonePrincipal.getInstance()), Set.of(), Set.of()); - noAccessSession = Subject.doAs(notAllowedSubject, (PrivilegedAction<ContentSession>) () -> { + noAccessSession = Java23Compatability.doAs(notAllowedSubject, (PrivilegedAction<ContentSession>) () -> { try { return getContentRepository().login(null, null); } catch (Exception e) { diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java index 41d72d6150..d5ee958b1b 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CacheValidatorProviderTest.java @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.plugins.tree.TreeUtil; @@ -89,7 +90,7 @@ public class CacheValidatorProviderTest extends AbstractSecurityTest { private Tree getCache(@NotNull Authorizable authorizable) throws Exception { // Creating CachedMembershipReader as this is the only class allowed to write in rep:cache - try (ContentSession cs = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null))) { + try (ContentSession cs = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null))) { Root r = cs.getLatestRoot(); Tree n = r.getTree(authorizable.getPath()); CachedMembershipReader reader = new CachedPrincipalMembershipReader( diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedGroupPrincipalTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedGroupPrincipalTest.java index ab8d02941d..5706dbb2c3 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedGroupPrincipalTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedGroupPrincipalTest.java @@ -24,6 +24,7 @@ import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.oak.AbstractSecurityTest; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject; @@ -112,7 +113,7 @@ public class CachedGroupPrincipalTest extends AbstractSecurityTest { private ContentSession getSystemSession() throws Exception { if (systemSession == null) { - systemSession = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null)); + systemSession = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null)); } return systemSession; } diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReaderTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReaderTest.java index e3059a87bf..90b6a641b5 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReaderTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/CachedPrincipalMembershipReaderTest.java @@ -60,6 +60,7 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.junit.LogCustomizer; import org.apache.jackrabbit.oak.spi.security.user.cache.CachedMembershipReader; import org.apache.jackrabbit.oak.spi.security.user.cache.CacheLoader; @@ -204,7 +205,7 @@ public class CachedPrincipalMembershipReaderTest extends AbstractSecurityTest { private Root getSystemRoot() throws Exception { if (systemSession == null) { - systemSession = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null)); + systemSession = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null)); } return systemSession.getLatestRoot(); } diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java index 179892d196..e24207d3e0 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/PasswordExpiryAdminTest.java @@ -23,6 +23,7 @@ import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager; import org.apache.jackrabbit.oak.plugins.tree.TreeUtil; import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants; @@ -73,7 +74,7 @@ public class PasswordExpiryAdminTest extends AbstractSecurityTest { @Override protected ContentSession createAdminSession(@NotNull ContentRepository repository) { try { - return Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repository.login(null, null)); + return Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repository.login(null, null)); } catch (PrivilegedActionException e) { throw new RuntimeException(e); } diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java index 6e47ff5fcc..445bcd9930 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.plugins.index.IndexConstants; @@ -173,7 +174,7 @@ public class UserInitializerTest extends AbstractSecurityTest { .with(sp) .createContentRepository(); - try (ContentSession cs = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repo.login(null, null))) { + try (ContentSession cs = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repo.login(null, null))) { Root root = cs.getLatestRoot(); UserConfiguration uc = sp.getConfiguration(UserConfiguration.class); UserManager umgr = uc.getUserManager(root, NamePathMapper.DEFAULT); @@ -210,7 +211,7 @@ public class UserInitializerTest extends AbstractSecurityTest { .with(sp) .createContentRepository(); - try (ContentSession cs = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repo.login(null, null))) { + try (ContentSession cs = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> repo.login(null, null))) { Root root = cs.getLatestRoot(); UserConfiguration uc = sp.getConfiguration(UserConfiguration.class); UserManager umgr = uc.getUserManager(root, NamePathMapper.DEFAULT); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java index bbe8179dc6..d8be995daf 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java @@ -28,6 +28,7 @@ import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; import org.apache.jackrabbit.oak.plugins.tree.TreeUtil; import org.apache.jackrabbit.oak.security.principal.AbstractPrincipalProviderTest; @@ -111,7 +112,7 @@ public class UserPrincipalProviderWithCacheTest extends AbstractPrincipalProvide private ContentSession getSystemSession() throws Exception { if (systemSession == null) { - systemSession = Subject.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null)); + systemSession = Java23Compatability.doAs(SystemSubject.INSTANCE, (PrivilegedExceptionAction<ContentSession>) () -> login(null)); } return systemSession; } diff --git a/oak-doc/src/site/markdown/security/authentication/preauthentication.md b/oak-doc/src/site/markdown/security/authentication/preauthentication.md index b958ab7769..774c39659d 100644 --- a/oak-doc/src/site/markdown/security/authentication/preauthentication.md +++ b/oak-doc/src/site/markdown/security/authentication/preauthentication.md @@ -137,7 +137,7 @@ Example how to use this type of pre-authentication: Subject subject = new Subject(true, principals, Collections.singleton(authInfo), Collections.<Object>emptySet()); Session session; try { - session = Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { + session = Java23Compatability.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { @Override public Session run() throws Exception { return login(null, null); diff --git a/oak-examples/webapp/src/main/java/org/apache/jackrabbit/j2ee/IndexInitializer.java b/oak-examples/webapp/src/main/java/org/apache/jackrabbit/j2ee/IndexInitializer.java index 0808528ce9..8f7f83a1be 100644 --- a/oak-examples/webapp/src/main/java/org/apache/jackrabbit/j2ee/IndexInitializer.java +++ b/oak-examples/webapp/src/main/java/org/apache/jackrabbit/j2ee/IndexInitializer.java @@ -34,6 +34,7 @@ import javax.security.auth.Subject; import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.commons.JcrUtils; import org.apache.jackrabbit.oak.api.AuthInfo; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.plugins.index.IndexConstants; import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants; import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants; @@ -119,7 +120,7 @@ public class IndexInitializer { Subject subject = new Subject(true, singleton(admin), singleton(authInfo), Collections.emptySet()); Session adminSession; try { - adminSession = Subject.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { + adminSession = Java23Compatability.doAsPrivileged(subject, new PrivilegedExceptionAction<Session>() { @Override public Session run() throws Exception { return repository.login(); diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L9_NullLoginTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L9_NullLoginTest.java index 5b722e9d0d..f410328751 100644 --- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L9_NullLoginTest.java +++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L9_NullLoginTest.java @@ -25,6 +25,7 @@ import javax.jcr.Session; import javax.security.auth.Subject; import javax.security.auth.login.Configuration; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.test.AbstractJCRTest; /** @@ -112,7 +113,7 @@ public class L9_NullLoginTest extends AbstractJCRTest { Subject subject = null; String expectedId = null; - testSession = Subject.doAs(subject, new PrivilegedExceptionAction<Session>() { + testSession = Java23Compatability.doAs(subject, new PrivilegedExceptionAction<Session>() { @Override public Session run() throws RepositoryException { return repository.login(null, null); diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/principalbased/AbstractPrincipalBasedTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/principalbased/AbstractPrincipalBasedTest.java index f788f99736..463a25a7ad 100644 --- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/principalbased/AbstractPrincipalBasedTest.java +++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/principalbased/AbstractPrincipalBasedTest.java @@ -25,6 +25,7 @@ import org.apache.jackrabbit.api.security.user.Group; import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.oak.AbstractSecurityTest; import org.apache.jackrabbit.oak.api.ContentSession; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.composite.MountInfoProviderService; import org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration; @@ -167,6 +168,6 @@ abstract class AbstractPrincipalBasedTest extends AbstractSecurityTest { @NotNull ContentSession getTestSession(@NotNull Principal... principals) throws Exception { Subject subject = new Subject(true, ImmutableSet.copyOf(principals), Set.of(), Set.of()); - return Subject.doAsPrivileged(subject, (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null); + return Java23Compatability.doAsPrivileged(subject, (PrivilegedExceptionAction<ContentSession>) () -> getContentRepository().login(null, null), null); } } \ No newline at end of file diff --git a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/composite/blueGreen/Persistence.java b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/composite/blueGreen/Persistence.java index 039a43e5c4..290fd7d83a 100644 --- a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/composite/blueGreen/Persistence.java +++ b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/composite/blueGreen/Persistence.java @@ -50,6 +50,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.composite.CompositeNodeStore; import org.apache.jackrabbit.oak.jcr.Jcr; import org.apache.jackrabbit.oak.namepath.NamePathMapper; @@ -286,7 +287,7 @@ public class Persistence { SecurityProvider securityProvider) throws RepositoryException { ContentSession cs = null; try { - cs = Subject.doAsPrivileged(SystemSubject.INSTANCE, new PrivilegedExceptionAction<ContentSession>() { + cs = Java23Compatability.doAsPrivileged(SystemSubject.INSTANCE, new PrivilegedExceptionAction<ContentSession>() { @Override public ContentSession run() throws Exception { return repo.login(null, null); diff --git a/oak-security-spi/pom.xml b/oak-security-spi/pom.xml index 8c0680beff..a0109aebea 100644 --- a/oak-security-spi/pom.xml +++ b/oak-security-spi/pom.xml @@ -109,6 +109,11 @@ <artifactId>oak-jackrabbit-api</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.jackrabbit</groupId> + <artifactId>oak-commons</artifactId> + <version>${project.version}</version> + </dependency> <dependency> <groupId>org.apache.jackrabbit</groupId> <artifactId>oak-shaded-guava</artifactId> diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java index 0f334ac667..41a3b00d5a 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java @@ -42,6 +42,7 @@ import org.apache.jackrabbit.oak.api.AuthInfo; import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; +import org.apache.jackrabbit.oak.commons.Java23Compatability; import org.apache.jackrabbit.oak.namepath.NamePathMapper; import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; import org.apache.jackrabbit.oak.spi.security.SecurityProvider; @@ -475,7 +476,7 @@ public abstract class AbstractLoginModule implements LoginModule { final ContentRepository repository = rcb.getContentRepository(); if (repository != null) { - systemSession = Subject.doAs(SystemSubject.INSTANCE, new PrivilegedExceptionAction<ContentSession>() { + systemSession = Java23Compatability.doAs(SystemSubject.INSTANCE, new PrivilegedExceptionAction<ContentSession>() { @Override public ContentSession run() throws LoginException, NoSuchWorkspaceException { return repository.login(null, rcb.getWorkspaceName());