org.jboss.security.auth.spi
Class UsernamePasswordLoginModule

java.lang.Object
  extended byorg.jboss.security.auth.spi.AbstractServerLoginModule
      extended byorg.jboss.security.auth.spi.UsernamePasswordLoginModule
All Implemented Interfaces:
LoginModule
Direct Known Subclasses:
AnonLoginModule, DatabaseServerLoginModule, LdapLoginModule, LoginModulesTestCase.TestLoginModule, SimpleServerLoginModule, UsersLoginModule, UsersRolesLoginModule, XMLLoginModule

public abstract class UsernamePasswordLoginModule
extends AbstractServerLoginModule

An abstract subclass of AbstractServerLoginModule that imposes an identity == String username, credentials == String password view on the login process.

Subclasses override the getUsersPassword() and getRoleSets() methods to return the expected password and roles for the user.

Version:
$Revision: 1.18.4.2 $
Author:
Scott.Stark@jboss.org
See Also:
getUsername(), getUsersPassword(), AbstractServerLoginModule.getRoleSets(), AbstractServerLoginModule.createIdentity(String)

Field Summary
 
Fields inherited from class org.jboss.security.auth.spi.AbstractServerLoginModule
callbackHandler, log, loginOk, options, principalClassName, sharedState, subject, unauthenticatedIdentity, useFirstPass
 
Constructor Summary
UsernamePasswordLoginModule()
           
 
Method Summary
protected  String createPasswordHash(String username, String password)
          If hashing is enabled, this method is called from login() prior to password validation.
protected  Object getCredentials()
           
protected  Principal getIdentity()
          Overriden by subclasses to return the Principal that corresponds to the user primary identity.
protected  Principal getUnauthenticatedIdentity()
           
protected  String getUsername()
           
protected  String[] getUsernameAndPassword()
          Called by login() to acquire the username and password strings for authentication.
protected abstract  String getUsersPassword()
          Get the expected password for the current username available via the getUsername() method.
 void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
          Override the superclass method to look for the following options after first invoking the super version.
 boolean login()
          Perform the authentication of the username and password.
protected  boolean validatePassword(String inputPassword, String expectedPassword)
          A hook that allows subclasses to change the validation of the input password against the expected password.
 
Methods inherited from class org.jboss.security.auth.spi.AbstractServerLoginModule
abort, commit, createGroup, createIdentity, getRoleSets, getUseFirstPass, logout
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UsernamePasswordLoginModule

public UsernamePasswordLoginModule()
Method Detail

initialize

public void initialize(Subject subject,
                       CallbackHandler callbackHandler,
                       Map sharedState,
                       Map options)
Override the superclass method to look for the following options after first invoking the super version.

Specified by:
initialize in interface LoginModule
Overrides:
initialize in class AbstractServerLoginModule
Parameters:
options - :
subject - the Subject to update after a successful login.
callbackHandler - the CallbackHandler that will be used to obtain the the user identity and credentials.
sharedState - a Map shared between all configured login module instances

login

public boolean login()
              throws LoginException
Perform the authentication of the username and password.

Specified by:
login in interface LoginModule
Overrides:
login in class AbstractServerLoginModule
Throws:
LoginException

getIdentity

protected Principal getIdentity()
Description copied from class: AbstractServerLoginModule
Overriden by subclasses to return the Principal that corresponds to the user primary identity.

Specified by:
getIdentity in class AbstractServerLoginModule

getUnauthenticatedIdentity

protected Principal getUnauthenticatedIdentity()
Overrides:
getUnauthenticatedIdentity in class AbstractServerLoginModule

getCredentials

protected Object getCredentials()

getUsername

protected String getUsername()

getUsernameAndPassword

protected String[] getUsernameAndPassword()
                                   throws LoginException
Called by login() to acquire the username and password strings for authentication. This method does no validation of either.

Returns:
String[], [0] = username, [1] = password
Throws:
LoginException - thrown if CallbackHandler is not set or fails.

createPasswordHash

protected String createPasswordHash(String username,
                                    String password)
If hashing is enabled, this method is called from login() prior to password validation.

Subclasses may override it to provide customized password hashing, for example by adding user-specific information or salting.

The default version calculates the hash based on the following options:

It will return null if the hash fails for any reason, which will in turn cause validatePassword() to fail.

Parameters:
username - ignored in default version
password - the password string to be hashed
Throws:
SecurityException - - thrown if there is a failure to load the digestCallback

validatePassword

protected boolean validatePassword(String inputPassword,
                                   String expectedPassword)
A hook that allows subclasses to change the validation of the input password against the expected password. This version checks that neither inputPassword or expectedPassword are null that that inputPassword.equals(expectedPassword) is true;

Returns:
true if the inputPassword is valid, false otherwise.

getUsersPassword

protected abstract String getUsersPassword()
                                    throws LoginException
Get the expected password for the current username available via the getUsername() method. This is called from within the login() method after the CallbackHandler has returned the username and candidate password.

Returns:
the valid password String
Throws:
LoginException


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.