Search in sources :

Example 6 with LoginModule

use of javax.security.auth.spi.LoginModule in project jspwiki by apache.

the class UserDatabaseLoginModuleTest method testLogout.

public final void testLogout() {
    try {
        CallbackHandler handler = new WikiCallbackHandler(m_engine, null, "user", "password");
        LoginModule module = new UserDatabaseLoginModule();
        module.initialize(m_subject, handler, new HashMap<String, Object>(), new HashMap<String, Object>());
        module.login();
        module.commit();
        Set<Principal> principals = m_subject.getPrincipals();
        Assert.assertEquals(1, principals.size());
        Assert.assertTrue(principals.contains(new WikiPrincipal("user", WikiPrincipal.LOGIN_NAME)));
        Assert.assertFalse(principals.contains(Role.AUTHENTICATED));
        Assert.assertFalse(principals.contains(Role.ALL));
        module.logout();
        Assert.assertEquals(0, principals.size());
    } catch (LoginException e) {
        System.err.println(e.getMessage());
        Assert.assertTrue(false);
    }
}
Also used : CallbackHandler(javax.security.auth.callback.CallbackHandler) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) LoginException(javax.security.auth.login.LoginException) LoginModule(javax.security.auth.spi.LoginModule) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) Principal(java.security.Principal)

Example 7 with LoginModule

use of javax.security.auth.spi.LoginModule in project jspwiki by apache.

the class UserDatabaseLoginModuleTest method testLogin.

public final void testLogin() {
    try {
        // Log in with a user that isn't in the database
        CallbackHandler handler = new WikiCallbackHandler(m_engine, null, "user", "password");
        LoginModule module = new UserDatabaseLoginModule();
        module.initialize(m_subject, handler, new HashMap<String, Object>(), new HashMap<String, Object>());
        module.login();
        module.commit();
        Set<Principal> principals = m_subject.getPrincipals();
        Assert.assertEquals(1, principals.size());
        Assert.assertTrue(principals.contains(new WikiPrincipal("user", WikiPrincipal.LOGIN_NAME)));
        Assert.assertFalse(principals.contains(Role.AUTHENTICATED));
        Assert.assertFalse(principals.contains(Role.ALL));
        // Login with a user that IS in the database
        m_subject = new Subject();
        handler = new WikiCallbackHandler(m_engine, null, "janne", "myP@5sw0rd");
        module = new UserDatabaseLoginModule();
        module.initialize(m_subject, handler, new HashMap<String, Object>(), new HashMap<String, Object>());
        module.login();
        module.commit();
        principals = m_subject.getPrincipals();
        Assert.assertEquals(1, principals.size());
        Assert.assertTrue(principals.contains(new WikiPrincipal("janne", WikiPrincipal.LOGIN_NAME)));
        Assert.assertFalse(principals.contains(Role.AUTHENTICATED));
        Assert.assertFalse(principals.contains(Role.ALL));
    } catch (LoginException e) {
        System.err.println(e.getMessage());
        Assert.assertTrue(false);
    }
}
Also used : CallbackHandler(javax.security.auth.callback.CallbackHandler) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) LoginException(javax.security.auth.login.LoginException) LoginModule(javax.security.auth.spi.LoginModule) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) Principal(java.security.Principal) Subject(javax.security.auth.Subject)

Example 8 with LoginModule

use of javax.security.auth.spi.LoginModule in project Payara by payara.

the class ClientCertificateLoginModule method login.

/**
 * Authenticate the user by prompting for a username and password.
 *
 * <p>
 *
 * @return true in all cases since this <code>LoginModule</code> should not be ignored.
 *
 * @exception LoginException if this <code>LoginModule</code> is unable to perform the
 * authentication.
 */
@Override
public boolean login() throws LoginException {
    // Prompt for a username and password
    if (callbackHandler == null) {
        throw new LoginException("Error: no CallbackHandler available " + "to garner authentication information from the user");
    }
    try {
        String[] certificateNames = new String[keyStore.size()];
        String[] aliasNames = new String[keyStore.size()];
        Enumeration<String> aliases = keyStore.aliases();
        for (int i = 0; i < keyStore.size(); i++) {
            aliasNames[i] = aliases.nextElement();
            certificateNames[i] = ((X509Certificate) keyStore.getCertificate(aliasNames[i])).getSubjectX500Principal().getName(X500Principal.RFC2253, OID.getOIDMap());
        }
        Callback[] callbacks = new Callback[] { createChoiceCallback(certificateNames) };
        callbackHandler.handle(callbacks);
        int[] selectedIndexes = ((ChoiceCallback) callbacks[0]).getSelectedIndexes();
        if (selectedIndexes == null) {
            throw new LoginException("No certificate selected!");
        } else if (selectedIndexes[0] == -1) {
            throw new LoginException("Incorrect keystore password");
        }
        if (debug) {
            _logger.fine(() -> "[ClientCertificateLoginModule] user entered certificates: " + Arrays.stream(selectedIndexes).mapToObj(i -> aliasNames[i]).collect(Collectors.toList()));
        }
        // The authenticate method previously picked out the wrong alias.
        // Since we allow only 1 choice the first element in idx
        // idx[0] should have the selected index.
        alias = aliasNames[selectedIndexes[0]];
        certificate = (X509Certificate) keyStore.getCertificate(alias);
        // The authenticate should always return a true.
        if (debug) {
            _logger.fine("\t\t[ClientCertificateLoginModule] authentication succeeded");
        }
        succeeded = true;
        return true;
    } catch (UnsupportedCallbackException uce) {
        throw new LoginException("Error: " + uce.getCallback() + " not available to garner authentication information from the user");
    } catch (Exception e) {
        throw new LoginException(e.toString());
    }
}
Also used : X509Certificate(java.security.cert.X509Certificate) LoginException(javax.security.auth.login.LoginException) Arrays(java.util.Arrays) OID(com.sun.enterprise.security.auth.realm.certificate.OID) X500Principal(javax.security.auth.x500.X500Principal) Enumeration(java.util.Enumeration) Globals(org.glassfish.internal.api.Globals) UnsupportedCallbackException(javax.security.auth.callback.UnsupportedCallbackException) X509CertificateCredential(com.sun.enterprise.security.auth.login.common.X509CertificateCredential) CallbackHandler(javax.security.auth.callback.CallbackHandler) LocalStringManagerImpl(com.sun.enterprise.util.LocalStringManagerImpl) Map(java.util.Map) FINE(java.util.logging.Level.FINE) LoginModule(javax.security.auth.spi.LoginModule) PrincipalImpl(org.glassfish.security.common.PrincipalImpl) ChoiceCallback(javax.security.auth.callback.ChoiceCallback) SecurityLoggerInfo(com.sun.enterprise.security.SecurityLoggerInfo) KeyStore(java.security.KeyStore) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) Subject(javax.security.auth.Subject) SSLUtils(com.sun.enterprise.security.ssl.SSLUtils) AppClientSSL(com.sun.enterprise.security.integration.AppClientSSL) CERT_REALMNAME(com.sun.enterprise.security.auth.login.LoginContextDriver.CERT_REALMNAME) Callback(javax.security.auth.callback.Callback) X509Certificate(java.security.cert.X509Certificate) LoginException(javax.security.auth.login.LoginException) UnsupportedCallbackException(javax.security.auth.callback.UnsupportedCallbackException) ChoiceCallback(javax.security.auth.callback.ChoiceCallback) ChoiceCallback(javax.security.auth.callback.ChoiceCallback) Callback(javax.security.auth.callback.Callback) LoginException(javax.security.auth.login.LoginException) UnsupportedCallbackException(javax.security.auth.callback.UnsupportedCallbackException)

Example 9 with LoginModule

use of javax.security.auth.spi.LoginModule in project jspwiki by apache.

the class AnonymousLoginModuleTest method testLogout.

public final void testLogout() {
    HttpServletRequest request = m_engine.newHttpRequest();
    try {
        CallbackHandler handler = new WebContainerCallbackHandler(m_engine, request);
        LoginModule module = new AnonymousLoginModule();
        module.initialize(m_subject, handler, new HashMap<String, Object>(), new HashMap<String, Object>());
        module.login();
        module.commit();
        Set<Principal> principals = m_subject.getPrincipals();
        Assert.assertEquals(1, principals.size());
        Assert.assertTrue(principals.contains(new WikiPrincipal("127.0.0.1")));
        Assert.assertFalse(principals.contains(Role.ANONYMOUS));
        Assert.assertFalse(principals.contains(Role.ALL));
        module.logout();
        Assert.assertEquals(0, principals.size());
    } catch (LoginException e) {
        System.err.println(e.getMessage());
        Assert.assertTrue(false);
    }
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) CallbackHandler(javax.security.auth.callback.CallbackHandler) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) LoginException(javax.security.auth.login.LoginException) LoginModule(javax.security.auth.spi.LoginModule) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) Principal(java.security.Principal)

Example 10 with LoginModule

use of javax.security.auth.spi.LoginModule in project jspwiki by apache.

the class AnonymousLoginModuleTest method testLogin.

public final void testLogin() {
    HttpServletRequest request = m_engine.newHttpRequest();
    try {
        // Test using IP address (AnonymousLoginModule succeeds)
        CallbackHandler handler = new WebContainerCallbackHandler(m_engine, request);
        LoginModule module = new AnonymousLoginModule();
        module.initialize(m_subject, handler, new HashMap<String, Object>(), new HashMap<String, Object>());
        module.login();
        module.commit();
        Set<Principal> principals = m_subject.getPrincipals();
        Assert.assertEquals(1, principals.size());
        Assert.assertTrue(principals.contains(new WikiPrincipal("127.0.0.1")));
        Assert.assertFalse(principals.contains(Role.ANONYMOUS));
        Assert.assertFalse(principals.contains(Role.ALL));
    } catch (LoginException e) {
        System.err.println(e.getMessage());
        Assert.assertTrue(false);
    }
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) CallbackHandler(javax.security.auth.callback.CallbackHandler) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) LoginException(javax.security.auth.login.LoginException) LoginModule(javax.security.auth.spi.LoginModule) WikiPrincipal(org.apache.wiki.auth.WikiPrincipal) Principal(java.security.Principal)

Aggregations

LoginModule (javax.security.auth.spi.LoginModule)19 LoginException (javax.security.auth.login.LoginException)12 CallbackHandler (javax.security.auth.callback.CallbackHandler)10 Principal (java.security.Principal)8 Subject (javax.security.auth.Subject)8 WikiPrincipal (org.apache.wiki.auth.WikiPrincipal)8 MockHttpServletRequest (net.sourceforge.stripes.mock.MockHttpServletRequest)4 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Cookie (javax.servlet.http.Cookie)2 HttpServletRequest (javax.servlet.http.HttpServletRequest)2 ExtensionLoginModule (org.eclipse.equinox.security.auth.module.ExtensionLoginModule)2 SecurityLoggerInfo (com.sun.enterprise.security.SecurityLoggerInfo)1 CERT_REALMNAME (com.sun.enterprise.security.auth.login.LoginContextDriver.CERT_REALMNAME)1 X509CertificateCredential (com.sun.enterprise.security.auth.login.common.X509CertificateCredential)1 OID (com.sun.enterprise.security.auth.realm.certificate.OID)1 AppClientSSL (com.sun.enterprise.security.integration.AppClientSSL)1 SSLUtils (com.sun.enterprise.security.ssl.SSLUtils)1 LocalStringManagerImpl (com.sun.enterprise.util.LocalStringManagerImpl)1 KeyStore (java.security.KeyStore)1