Search in sources :

Example 1 with LoginContext

use of org.apache.jackrabbit.oak.spi.security.authentication.LoginContext in project jackrabbit-oak by apache.

the class LoginContextProviderImplTest method testGetLoginContextWithInvalidProviderConfig.

@Test
public void testGetLoginContextWithInvalidProviderConfig() throws Exception {
    ConfigurationParameters params = ConfigurationParameters.of(AuthenticationConfiguration.PARAM_CONFIG_SPI_NAME, "invalid");
    LoginContextProvider provider = new LoginContextProviderImpl(AuthenticationConfiguration.DEFAULT_APP_NAME, params, getContentRepository(), getSecurityProvider(), new DefaultWhiteboard());
    // invalid configuration falls back to default configuration
    LoginContext ctx = provider.getLoginContext(new SimpleCredentials(getTestUser().getID(), getTestUser().getID().toCharArray()), null);
    ctx.login();
}
Also used : SimpleCredentials(javax.jcr.SimpleCredentials) JaasLoginContext(org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext) LoginContext(org.apache.jackrabbit.oak.spi.security.authentication.LoginContext) LoginContextProvider(org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider) DefaultWhiteboard(org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard) ConfigurationParameters(org.apache.jackrabbit.oak.spi.security.ConfigurationParameters) AbstractSecurityTest(org.apache.jackrabbit.oak.AbstractSecurityTest) Test(org.junit.Test)

Example 2 with LoginContext

use of org.apache.jackrabbit.oak.spi.security.authentication.LoginContext in project jackrabbit-oak by apache.

the class LoginContextProviderImplTest method getLoginContextWithoutCredentials.

@Test
public void getLoginContextWithoutCredentials() throws Exception {
    LoginContext ctx = lcProvider.getLoginContext(null, root.getContentSession().getWorkspaceName());
    assertNotNull(ctx);
    assertTrue(ctx instanceof JaasLoginContext);
}
Also used : JaasLoginContext(org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext) LoginContext(org.apache.jackrabbit.oak.spi.security.authentication.LoginContext) JaasLoginContext(org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext) AbstractSecurityTest(org.apache.jackrabbit.oak.AbstractSecurityTest) Test(org.junit.Test)

Example 3 with LoginContext

use of org.apache.jackrabbit.oak.spi.security.authentication.LoginContext in project jackrabbit-oak by apache.

the class ContentRepositoryImpl method login.

@Nonnull
@Override
public ContentSession login(Credentials credentials, String workspaceName) throws LoginException, NoSuchWorkspaceException {
    if (workspaceName == null) {
        workspaceName = defaultWorkspaceName;
    }
    // TODO: support multiple workspaces. See OAK-118
    if (!defaultWorkspaceName.equals(workspaceName)) {
        throw new NoSuchWorkspaceException(workspaceName);
    }
    LoginContextProvider lcProvider = securityProvider.getConfiguration(AuthenticationConfiguration.class).getLoginContextProvider(this);
    LoginContext loginContext = lcProvider.getLoginContext(credentials, workspaceName);
    loginContext.login();
    return new ContentSessionImpl(loginContext, securityProvider, workspaceName, nodeStore, commitHook, queryEngineSettings, indexProvider);
}
Also used : NoSuchWorkspaceException(javax.jcr.NoSuchWorkspaceException) AuthenticationConfiguration(org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration) LoginContext(org.apache.jackrabbit.oak.spi.security.authentication.LoginContext) LoginContextProvider(org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider) Nonnull(javax.annotation.Nonnull)

Example 4 with LoginContext

use of org.apache.jackrabbit.oak.spi.security.authentication.LoginContext in project jackrabbit-oak by apache.

the class LoginContextProviderImplTest method testGetLoginContextTwice.

@Test
public void testGetLoginContextTwice() throws Exception {
    Configuration.setConfiguration(new Configuration() {

        @Override
        public AppConfigurationEntry[] getAppConfigurationEntry(String applicationName) {
            return new AppConfigurationEntry[] { new AppConfigurationEntry(GuestLoginModule.class.getName(), AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL, new HashMap()) };
        }
    });
    LoginContextProvider provider = new LoginContextProviderImpl(AuthenticationConfiguration.DEFAULT_APP_NAME, ConfigurationParameters.EMPTY, getContentRepository(), getSecurityProvider(), new DefaultWhiteboard());
    provider.getLoginContext(null, null);
    LoginContext ctx = provider.getLoginContext(null, null);
    ctx.login();
    assertFalse(ctx.getSubject().getPublicCredentials(GuestCredentials.class).isEmpty());
}
Also used : AppConfigurationEntry(javax.security.auth.login.AppConfigurationEntry) JaasLoginContext(org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext) LoginContext(org.apache.jackrabbit.oak.spi.security.authentication.LoginContext) Configuration(javax.security.auth.login.Configuration) AuthenticationConfiguration(org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration) HashMap(java.util.HashMap) LoginContextProvider(org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider) DefaultWhiteboard(org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard) AbstractSecurityTest(org.apache.jackrabbit.oak.AbstractSecurityTest) Test(org.junit.Test)

Example 5 with LoginContext

use of org.apache.jackrabbit.oak.spi.security.authentication.LoginContext in project jackrabbit-oak by apache.

the class LoginContextProviderImplTest method testGetPreAuthLoginContext.

@Test
public void testGetPreAuthLoginContext() {
    Subject subject = new Subject(true, ImmutableSet.<Principal>of(), ImmutableSet.of(), ImmutableSet.of());
    LoginContext ctx = Subject.doAs(subject, new PrivilegedAction<LoginContext>() {

        @Override
        public LoginContext run() {
            try {
                return lcProvider.getLoginContext(null, null);
            } catch (LoginException e) {
                throw new RuntimeException();
            }
        }
    });
    assertTrue(ctx instanceof PreAuthContext);
    assertSame(subject, ctx.getSubject());
}
Also used : JaasLoginContext(org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext) LoginContext(org.apache.jackrabbit.oak.spi.security.authentication.LoginContext) PreAuthContext(org.apache.jackrabbit.oak.spi.security.authentication.PreAuthContext) LoginException(javax.security.auth.login.LoginException) Subject(javax.security.auth.Subject) AbstractSecurityTest(org.apache.jackrabbit.oak.AbstractSecurityTest) Test(org.junit.Test)

Aggregations

LoginContext (org.apache.jackrabbit.oak.spi.security.authentication.LoginContext)7 AbstractSecurityTest (org.apache.jackrabbit.oak.AbstractSecurityTest)6 JaasLoginContext (org.apache.jackrabbit.oak.spi.security.authentication.JaasLoginContext)6 Test (org.junit.Test)6 LoginContextProvider (org.apache.jackrabbit.oak.spi.security.authentication.LoginContextProvider)4 AuthenticationConfiguration (org.apache.jackrabbit.oak.spi.security.authentication.AuthenticationConfiguration)3 DefaultWhiteboard (org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard)3 HashMap (java.util.HashMap)2 SimpleCredentials (javax.jcr.SimpleCredentials)2 Subject (javax.security.auth.Subject)2 AppConfigurationEntry (javax.security.auth.login.AppConfigurationEntry)2 Configuration (javax.security.auth.login.Configuration)2 Nonnull (javax.annotation.Nonnull)1 NoSuchWorkspaceException (javax.jcr.NoSuchWorkspaceException)1 LoginException (javax.security.auth.login.LoginException)1 ConfigurationParameters (org.apache.jackrabbit.oak.spi.security.ConfigurationParameters)1 PreAuthContext (org.apache.jackrabbit.oak.spi.security.authentication.PreAuthContext)1