Package org.apache.catalina.realm

# Class JAASMemoryLoginModule

java.lang.Object
org.apache.catalina.util.LifecycleBase
org.apache.catalina.util.LifecycleMBeanBase
org.apache.catalina.realm.RealmBase
org.apache.catalina.realm.MemoryRealm
org.apache.catalina.realm.JAASMemoryLoginModule

All Implemented Interfaces:
  `MBeanRegistration`, `LoginModule`, `Contained`, `JmxEnabled`, `Lifecycle`, `Realm`

public class JAASMemoryLoginModule extends MemoryRealm implements LoginModule

Implementation of the JAAS LoginModule interface, primarily for use in testing `JAASRealm`. It utilizes an XML-format data file of username/password/role information identical to that supported by `org.apache.catalina.realm.MemoryRealm`.

This class recognizes the following string-valued options, which are specified in the configuration file and passed to `initialize(Subject, CallbackHandler, Map, Map)` in the `options` argument:

- pathname - Relative (to the pathname specified by the "catalina.base" system property) or absolute pathname to the XML file containing our user information, in the format supported by `MemoryRealm`. The default value matches the MemoryRealm default.
- credentialHandlerClassName - The fully qualified class name of the CredentialHandler to use. If not specified, `MessageDigestCredentialHandler` will be used.
- Any additional options will be used to identify and call setters on the `CredentialHandler`. For example, `algorithm=SHA256` would result in a call to `MessageDigestCredentialHandler.setAlgorithm(String)` with a parameter of `"SHA256"`

IMPLEMENTATION NOTE - This class implements `Realm` only to satisfy the calling requirements of the `GenericPrincipal` constructor. It does not actually perform the functionality required of a `Realm` implementation.

Author:
  Craig R. McClanahan

## Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.catalina.realm.RealmBase

`RealmBase.AllRolesMode`

### Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle

`Lifecycle.SingleUse`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected CallbackHandler`
`callbackHandler`
The callback handler responsible for answering our requests.
`protected boolean`
`committed`
Has our own `commit()` returned successfully?
`protected Map<String,?>`
`options`
The configuration information for this `LoginModule`.
`protected String`
`pathname`
The absolute or relative pathname to the XML configuration file.
`protected Principal`
`principal`
The `Principal` identified by our validation, or `null` if validation failed.
`protected Map<String,?>`
`sharedState`
The state information that is shared with other configured `LoginModule` instances.
`protected Subject`
`subject`
The subject for which we are performing authentication.

### Fields inherited from class org.apache.catalina.realm.RealmBase

`allRolesMode, container, containerLog, realmPath, sm, stripRealmForGss, support, USER_ATTRIBUTES_DELIMITER, USER_ATTRIBUTES_WILDCARD, userAttributes, userAttributesList, validate, x509UsernameRetriever, x509UsernameRetrieverClassName`

### Fields inherited from interface org.apache.catalina.Lifecycle

`AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

## Constructor Summary

Constructors
Constructor
Description
`JAASMemoryLoginModule()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`abort()`
`boolean`
`commit()`
`void`
`initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)`
`protected void`
`load()`
Load the contents of our configuration file.
`boolean`
`login()`
`boolean`
`logout()`

### Methods inherited from class org.apache.catalina.realm.MemoryRealm

`authenticate, getDigester, getPassword, getPathname, getPrincipal, setPathname, startInternal`

### Methods inherited from class org.apache.catalina.realm.RealmBase

`addPropertyChangeListener, authenticate, authenticate, authenticate, authenticate, authenticate, authenticate, backgroundProcess, findSecurityConstraints, getAllRolesMode, getContainer, getCredentialHandler, getDigest, getDigest, getDomainInternal, getObjectNameKeyProperties, getPrincipal, getPrincipal, getRealmPath, getRealmSuffix, getServer, getTransportGuaranteeRedirectStatus, getUserAttributes, getValidate, getX509UsernameRetrieverClassName, hasMessageDigest, hasResourcePermission, hasRole, hasRoleInternal, hasUserDataPermission, initInternal, isStripRealmForGss, main, parseUserAttributes, removePropertyChangeListener, setAllRolesMode, setContainer, setCredentialHandler, setRealmPath, setStripRealmForGss, setTransportGuaranteeRedirectStatus, setUserAttributes, setValidate, setX509UsernameRetrieverClassName, stopInternal, toString`

### Methods inherited from class org.apache.catalina.util.LifecycleMBeanBase

`destroyInternal, getDomain, getObjectName, postDeregister, postRegister, preDeregister, preRegister, register, setDomain, unregister, unregister`

### Methods inherited from class org.apache.catalina.util.LifecycleBase

`addLifecycleListener, destroy, findLifecycleListeners, fireLifecycleEvent, getState, getStateName, getThrowOnFailure, init, removeLifecycleListener, setState, setState, setThrowOnFailure, start, stop`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.catalina.Realm

`isAvailable`

## Field Details

### callbackHandler

protected CallbackHandler callbackHandler
The callback handler responsible for answering our requests.

### committed

protected boolean committed
Has our own `commit()` returned successfully?

### options

protected Map<String,?> options
The configuration information for this `LoginModule`.

### pathname

protected String pathname
The absolute or relative pathname to the XML configuration file.

### principal

protected Principal principal
The `Principal` identified by our validation, or `null` if validation failed.

### sharedState

protected Map<String,?> sharedState
The state information that is shared with other configured `LoginModule` instances.

### subject

protected Subject subject
The subject for which we are performing authentication.

## Constructor Details

### JAASMemoryLoginModule

public JAASMemoryLoginModule()

## Method Details

### abort

public boolean abort() throws LoginException

Specified by:
  `abort` in interface `LoginModule`
Throws:
  `LoginException`

### commit

public boolean commit() throws LoginException

Specified by:
  `commit` in interface `LoginModule`
Throws:
  `LoginException`

### initialize

public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)

Specified by:
  `initialize` in interface `LoginModule`

### login

public boolean login() throws LoginException

Specified by:
  `login` in interface `LoginModule`
Throws:
  `LoginException`

### logout

public boolean logout() throws LoginException

Specified by:
  `logout` in interface `LoginModule`
Throws:
  `LoginException`

### load

protected void load()
Load the contents of our configuration file.