javax.security.auth.callback.TextInputCallback Java Examples

The following examples show how to use javax.security.auth.callback.TextInputCallback. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: JAASMemoryLoginModule.java    From Tomcat8-Source-Read with MIT License 6 votes vote down vote up
private String getCatalinaBase() {
    // Have to get this via a callback as that is the only link we have back
    // to the defining Realm. Can't use the system property as that may not
    // be set/correct in an embedded scenario

    if (callbackHandler == null) {
        return null;
    }

    Callback callbacks[] = new Callback[1];
    callbacks[0] = new TextInputCallback("catalinaBase");

    String result = null;

    try {
        callbackHandler.handle(callbacks);
        result = ((TextInputCallback) callbacks[0]).getText();
    } catch (IOException | UnsupportedCallbackException e) {
        return null;
    }

    return result;
}
 
Example #2
Source File: JavaCallbackHandler.java    From neoscada with Eclipse Public License 1.0 6 votes vote down vote up
private void fillResultFromCallback ( final Callback cb, final javax.security.auth.callback.Callback jcb )
{
    if ( cb instanceof TextCallback && jcb instanceof TextInputCallback )
    {
        ( (TextCallback)cb ).setValue ( ( (TextInputCallback)jcb ).getText () );
    }
    else if ( cb instanceof UserNameCallback && jcb instanceof NameCallback )
    {
        ( (UserNameCallback)cb ).setValue ( ( (NameCallback)jcb ).getName () );
    }
    else if ( cb instanceof PasswordCallback && jcb instanceof javax.security.auth.callback.PasswordCallback )
    {
        ( (PasswordCallback)cb ).setPassword ( String.valueOf ( ( (javax.security.auth.callback.PasswordCallback)jcb ).getPassword () ) );
    }
    else
    {
        cb.cancel ();
    }
}
 
Example #3
Source File: JavaCallbackHandler.java    From neoscada with Eclipse Public License 1.0 6 votes vote down vote up
private javax.security.auth.callback.Callback convert ( final Callback cb )
{
    if ( cb instanceof UserNameCallback )
    {
        return new NameCallback ( ( (UserNameCallback)cb ).getLabel () );
    }
    else if ( cb instanceof TextCallback )
    {
        return new TextInputCallback ( ( (TextCallback)cb ).getLabel () );
    }
    if ( cb instanceof PasswordCallback )
    {
        return new javax.security.auth.callback.PasswordCallback ( ( (PasswordCallback)cb ).getLabel (), false );
    }
    return null;
}
 
Example #4
Source File: JAASCallbackHandler.java    From Tomcat8-Source-Read with MIT License 4 votes vote down vote up
/**
 * Retrieve the information requested in the provided <code>Callbacks</code>.
 * This implementation only recognizes {@link NameCallback},
 * {@link PasswordCallback} and {@link TextInputCallback}.
 * {@link TextInputCallback} is used to pass the various additional
 * parameters required for DIGEST authentication.
 *
 * @param callbacks The set of <code>Callback</code>s to be processed
 *
 * @exception IOException if an input/output error occurs
 * @exception UnsupportedCallbackException if the login method requests
 *  an unsupported callback type
 */
@Override
public void handle(Callback callbacks[])
    throws IOException, UnsupportedCallbackException {

    for (int i = 0; i < callbacks.length; i++) {

        if (callbacks[i] instanceof NameCallback) {
            if (realm.getContainer().getLogger().isTraceEnabled())
                realm.getContainer().getLogger().trace(sm.getString("jaasCallback.username", username));
            ((NameCallback) callbacks[i]).setName(username);
        } else if (callbacks[i] instanceof PasswordCallback) {
            final char[] passwordcontents;
            if (password != null) {
                passwordcontents = password.toCharArray();
            } else {
                passwordcontents = new char[0];
            }
            ((PasswordCallback) callbacks[i]).setPassword
                (passwordcontents);
        } else if (callbacks[i] instanceof TextInputCallback) {
            TextInputCallback cb = ((TextInputCallback) callbacks[i]);
            if (cb.getPrompt().equals("nonce")) {
                cb.setText(nonce);
            } else if (cb.getPrompt().equals("nc")) {
                cb.setText(nc);
            } else if (cb.getPrompt().equals("cnonce")) {
                cb.setText(cnonce);
            } else if (cb.getPrompt().equals("qop")) {
                cb.setText(qop);
            } else if (cb.getPrompt().equals("realmName")) {
                cb.setText(realmName);
            } else if (cb.getPrompt().equals("md5a2")) {
                cb.setText(md5a2);
            } else if (cb.getPrompt().equals("authMethod")) {
                cb.setText(authMethod);
            } else if (cb.getPrompt().equals("catalinaBase")) {
                cb.setText(realm.getContainer().getCatalinaBase().getAbsolutePath());
            } else {
                throw new UnsupportedCallbackException(callbacks[i]);
            }
        } else {
            throw new UnsupportedCallbackException(callbacks[i]);
        }
    }
}
 
Example #5
Source File: JAASMemoryLoginModule.java    From Tomcat8-Source-Read with MIT License 4 votes vote down vote up
/**
 * Phase 1 of authenticating a <code>Subject</code>.
 *
 * @return <code>true</code> if the authentication succeeded, or
 *  <code>false</code> if this <code>LoginModule</code> should be
 *  ignored
 *
 * @exception LoginException if the authentication fails
 */
@Override
public boolean login() throws LoginException {
    // Set up our CallbackHandler requests
    if (callbackHandler == null)
        throw new LoginException("No CallbackHandler specified");
    Callback callbacks[] = new Callback[9];
    callbacks[0] = new NameCallback("Username: ");
    callbacks[1] = new PasswordCallback("Password: ", false);
    callbacks[2] = new TextInputCallback("nonce");
    callbacks[3] = new TextInputCallback("nc");
    callbacks[4] = new TextInputCallback("cnonce");
    callbacks[5] = new TextInputCallback("qop");
    callbacks[6] = new TextInputCallback("realmName");
    callbacks[7] = new TextInputCallback("md5a2");
    callbacks[8] = new TextInputCallback("authMethod");

    // Interact with the user to retrieve the username and password
    String username = null;
    String password = null;
    String nonce = null;
    String nc = null;
    String cnonce = null;
    String qop = null;
    String realmName = null;
    String md5a2 = null;
    String authMethod = null;

    try {
        callbackHandler.handle(callbacks);
        username = ((NameCallback) callbacks[0]).getName();
        password =
            new String(((PasswordCallback) callbacks[1]).getPassword());
        nonce = ((TextInputCallback) callbacks[2]).getText();
        nc = ((TextInputCallback) callbacks[3]).getText();
        cnonce = ((TextInputCallback) callbacks[4]).getText();
        qop = ((TextInputCallback) callbacks[5]).getText();
        realmName = ((TextInputCallback) callbacks[6]).getText();
        md5a2 = ((TextInputCallback) callbacks[7]).getText();
        authMethod = ((TextInputCallback) callbacks[8]).getText();
    } catch (IOException | UnsupportedCallbackException e) {
        throw new LoginException(e.toString());
    }

    // Validate the username and password we have received
    if (authMethod == null) {
        // BASIC or FORM
        principal = super.authenticate(username, password);
    } else if (authMethod.equals(HttpServletRequest.DIGEST_AUTH)) {
        principal = super.authenticate(username, password, nonce, nc,
                cnonce, qop, realmName, md5a2);
    } else if (authMethod.equals(HttpServletRequest.CLIENT_CERT_AUTH)) {
        principal = super.getPrincipal(username);
    } else {
        throw new LoginException("Unknown authentication method");
    }

    if (log.isDebugEnabled()) {
        log.debug("login " + username + " " + principal);
    }

    // Report results based on success or failure
    if (principal != null) {
        return true;
    } else {
        throw new FailedLoginException("Username or password is incorrect");
    }
}
 
Example #6
Source File: JAASCallbackHandler.java    From Tomcat7.0.67 with Apache License 2.0 4 votes vote down vote up
/**
 * Retrieve the information requested in the provided <code>Callbacks</code>.
 * This implementation only recognizes {@link NameCallback},
 * {@link PasswordCallback} and {@link TextInputCallback}.
 * {@link TextInputCallback} is used to pass the various additional
 * parameters required for DIGEST authentication. 
 *
 * @param callbacks The set of <code>Callback</code>s to be processed
 *
 * @exception IOException if an input/output error occurs
 * @exception UnsupportedCallbackException if the login method requests
 *  an unsupported callback type
 */
@Override
public void handle(Callback callbacks[])
    throws IOException, UnsupportedCallbackException {

    for (int i = 0; i < callbacks.length; i++) {

        if (callbacks[i] instanceof NameCallback) {
            if (realm.getContainer().getLogger().isTraceEnabled())
                realm.getContainer().getLogger().trace(sm.getString("jaasCallback.username", username));
            ((NameCallback) callbacks[i]).setName(username);
        } else if (callbacks[i] instanceof PasswordCallback) {
            final char[] passwordcontents;
            if (password != null) {
                passwordcontents = password.toCharArray();
            } else {
                passwordcontents = new char[0];
            }
            ((PasswordCallback) callbacks[i]).setPassword
                (passwordcontents);
        } else if (callbacks[i] instanceof TextInputCallback) {
            TextInputCallback cb = ((TextInputCallback) callbacks[i]);
            if (cb.getPrompt().equals("nonce")) {
                cb.setText(nonce);
            } else if (cb.getPrompt().equals("nc")) {
                cb.setText(nc);
            } else if (cb.getPrompt().equals("cnonce")) {
                cb.setText(cnonce);
            } else if (cb.getPrompt().equals("qop")) {
                cb.setText(qop);
            } else if (cb.getPrompt().equals("realmName")) {
                cb.setText(realmName);
            } else if (cb.getPrompt().equals("md5a2")) {
                cb.setText(md5a2);
            } else if (cb.getPrompt().equals("authMethod")) {
                cb.setText(authMethod);
            } else {
                throw new UnsupportedCallbackException(callbacks[i]);
            }
        } else {
            throw new UnsupportedCallbackException(callbacks[i]);
        }
    }
}
 
Example #7
Source File: JAASCallbackHandler.java    From tomcatsrc with Apache License 2.0 4 votes vote down vote up
/**
 * Retrieve the information requested in the provided <code>Callbacks</code>.
 * This implementation only recognizes {@link NameCallback},
 * {@link PasswordCallback} and {@link TextInputCallback}.
 * {@link TextInputCallback} is used to pass the various additional
 * parameters required for DIGEST authentication. 
 *
 * @param callbacks The set of <code>Callback</code>s to be processed
 *
 * @exception IOException if an input/output error occurs
 * @exception UnsupportedCallbackException if the login method requests
 *  an unsupported callback type
 */
@Override
public void handle(Callback callbacks[])
    throws IOException, UnsupportedCallbackException {

    for (int i = 0; i < callbacks.length; i++) {

        if (callbacks[i] instanceof NameCallback) {
            if (realm.getContainer().getLogger().isTraceEnabled())
                realm.getContainer().getLogger().trace(sm.getString("jaasCallback.username", username));
            ((NameCallback) callbacks[i]).setName(username);
        } else if (callbacks[i] instanceof PasswordCallback) {
            final char[] passwordcontents;
            if (password != null) {
                passwordcontents = password.toCharArray();
            } else {
                passwordcontents = new char[0];
            }
            ((PasswordCallback) callbacks[i]).setPassword
                (passwordcontents);
        } else if (callbacks[i] instanceof TextInputCallback) {
            TextInputCallback cb = ((TextInputCallback) callbacks[i]);
            if (cb.getPrompt().equals("nonce")) {
                cb.setText(nonce);
            } else if (cb.getPrompt().equals("nc")) {
                cb.setText(nc);
            } else if (cb.getPrompt().equals("cnonce")) {
                cb.setText(cnonce);
            } else if (cb.getPrompt().equals("qop")) {
                cb.setText(qop);
            } else if (cb.getPrompt().equals("realmName")) {
                cb.setText(realmName);
            } else if (cb.getPrompt().equals("md5a2")) {
                cb.setText(md5a2);
            } else if (cb.getPrompt().equals("authMethod")) {
                cb.setText(authMethod);
            } else {
                throw new UnsupportedCallbackException(callbacks[i]);
            }
        } else {
            throw new UnsupportedCallbackException(callbacks[i]);
        }
    }
}