public abstract class BasePasswordLoginModule extends Object implements LoginModule
Most login modules receive a username and password from the client (possibly through HTTP BASIC auth, or FORM, or other mechanism) and then make (or delegate) an authentication decision based on this data. This class provides common methods for such password-based login modules.
Subclasses need to implement the authenticateUser() method and later call commitUserAuthentication().
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
_commitSucceeded |
protected Realm |
_currentRealm |
protected String[] |
_groupsList |
protected static Logger |
_logger |
protected Map |
_options |
protected char[] |
_passwd |
protected String |
_password |
protected Map |
_sharedState |
protected Subject |
_subject |
protected boolean |
_succeeded |
protected String |
_username |
protected PrincipalImpl |
_userPrincipal |
protected static StringManager |
sm |
| Constructor and Description |
|---|
BasePasswordLoginModule() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
abort()
Abort the authentication process.
|
protected abstract void |
authenticateUser()
Perform authentication decision.
|
boolean |
commit()
Commit the authentication.
|
void |
commitUserAuthentication(String[] groups)
This is a convenience method which can be used by subclasses
|
void |
extractCredentials()
Method to extract container-provided username and password
|
Realm |
getCurrentRealm() |
String[] |
getGroupsList() |
String |
getPassword()
Deprecated - password is preferred to be a char[]
|
char[] |
getPasswordChar() |
<T> T |
getRealm(Class<T> realmClazz,
String exceptionMsgKey) |
Subject |
getSubject() |
String |
getUsername() |
PrincipalImpl |
getUserPrincipal() |
void |
initialize(Subject subject,
CallbackHandler callbackHandler,
Map sharedState,
Map options)
Initialize this login module.
|
boolean |
isCommitSucceeded() |
boolean |
isSucceeded() |
boolean |
login()
Perform login.
|
boolean |
logout()
Log out the subject.
|
void |
setLoginModuleForAuthentication(LoginModule userDefinedLoginModule) |
protected static final Logger _logger
protected static final StringManager sm
protected Subject _subject
protected Map _sharedState
protected Map _options
protected String _username
protected String _password
protected char[] _passwd
protected Realm _currentRealm
protected boolean _succeeded
protected boolean _commitSucceeded
protected PrincipalImpl _userPrincipal
protected String[] _groupsList
public final void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
initialize in interface LoginModulesubject - - the Subject to be authenticated.callbackHandler - - a CallbackHandler for obtaining the subject username and password.sharedState - - state shared with other configured LoginModules.options - - options specified in the login Configuration for this particular LoginModule.public final boolean login()
throws LoginException
The callback handler is used to obtain authentication info for the subject and a login is attempted. This PasswordLoginModule expects to find a PasswordCredential in the private credentials of the Subject. If not present the login fails. The callback handler is ignored as it is not really relevant on the server side. Finally, the authenticateUser() method is invoked.
login in interface LoginModuleLoginException - Thrown if login failed, or on other problems.public boolean commit()
throws LoginException
Commit is called after all necessary login modules have succeeded. It adds (if not present) a PrincipalImpl principal and a LocalCredentials public credential to the Subject.
commit in interface LoginModuleLoginException - If commit fails.public final boolean abort()
throws LoginException
abort in interface LoginModuleLoginExceptionpublic final boolean logout()
throws LoginException
logout in interface LoginModuleLoginExceptionpublic final void commitUserAuthentication(String[] groups)
This is a convenience method which can be used by subclasses
Note that this method is called after the authentication has succeeded. If authentication failed do not call this method. Global instance field succeeded is set to true by this method.
groups - String array of group memberships for user (could be empty).public Subject getSubject()
public final void extractCredentials()
throws LoginException
LoginExceptionprotected abstract void authenticateUser()
throws LoginException
LoginException - on authentication failure.public void setLoginModuleForAuthentication(LoginModule userDefinedLoginModule)
public String getUsername()
public String getPassword()
public char[] getPasswordChar()
public Realm getCurrentRealm()
public boolean isSucceeded()
public boolean isCommitSucceeded()
public PrincipalImpl getUserPrincipal()
public String[] getGroupsList()
public <T> T getRealm(Class<T> realmClazz, String exceptionMsgKey) throws LoginException
LoginExceptionCopyright © 2019. All rights reserved.