## org.apache.catalina.realm
Class JAASMemoryLoginModule

    java.lang.Object
      org.apache.catalina.realm.RealmBase
          org.apache.catalina.realm.MemoryRealm
              org.apache.catalina.realm.JAASMemoryLoginModule

All Implemented Interfaces:
  javax.management.MBeanRegistration, javax.security.auth.spi.LoginModule, Lifecycle, Realm

    public class JAASMemoryLoginModule

extends MemoryRealm
implements javax.security.auth.spi.LoginModule, Realm

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` (except that digested passwords are not supported).

This class recognizes the following string-valued options, which are specified in the configuration file (and passed to our constructor in the `options` argument:

- debug - Set to "true" to get debugging messages generated to System.out. The default value is `false`.
- pathname - Relative (to the pathname specified by the "catalina.base" system property) or absolute pahtname to the XML file containing our user information, in the format supported by `MemoryRealm`. The default value matches the MemoryRealm default.

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.

Version:
  $Revision: 692717 $ $Date: 2008-09-06 21:52:56 +0200 (Sat, 06 Sep 2008) $
Author:
  Craig R. McClanahan

Nested Class Summary

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

Field Summary
`protected javax.security.auth.callback.CallbackHandler` `callbackHandler` The callback handler responsible for answering our requests.
`protected boolean` `committed` Has our own `commit()` returned successfully?
`protected java.util.Map` `options` The configuration information for this `LoginModule`.
`protected java.lang.String` `pathname` The absolute or relative pathname to the XML configuration file.
`protected java.security.Principal` `principal` The `Principal` identified by our validation, or `null` if validation falied.
`protected java.util.HashMap` `principals` The set of `Principals` loaded from our configuration file.
`protected java.util.Map` `sharedState` The state information that is shared with other configured `LoginModule` instances.
`protected static StringManager` `sm` The string manager for this package.
`protected javax.security.auth.Subject` `subject` The subject for which we are performing authentication.

Fields inherited from class org.apache.catalina.realm.MemoryRealm
`info, name`

Fields inherited from class org.apache.catalina.realm.RealmBase
`allRolesMode, container, containerLog, controller, digest, digestEncoding, domain, host, initialized, lifecycle, md, md5Encoder, md5Helper, mserver, oname, path, realmPath, started, support, type, validate`

Fields inherited from interface org.apache.catalina.Lifecycle
`AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, DESTROY_EVENT, INIT_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT`

Constructor Summary
`JAASMemoryLoginModule()`

Method Summary
`boolean` `abort()` Phase 2 of authenticating a `Subject` when Phase 1 fails.
`boolean` `commit()` Phase 2 of authenticating a `Subject` when Phase 1 was successful.
`SecurityConstraint[]` `findSecurityConstraints(Request request, Context context)` Return the SecurityConstraints configured to guard the request URI for this request, or `null` if there is no such constraint.
`void` `initialize(javax.security.auth.Subject subject, javax.security.auth.callback.CallbackHandler callbackHandler, java.util.Map sharedState, java.util.Map options)` Initialize this `LoginModule` with the specified configuration information.
`protected void` `load()` Load the contents of our configuration file.
`boolean` `login()` Phase 1 of authenticating a `Subject`.
`boolean` `logout()` Log out this user.

Methods inherited from class org.apache.catalina.realm.MemoryRealm
`authenticate, getDigester, getInfo, getName, getPassword, getPathname, getPrincipal, getPrincipals, setPathname, start, stop`

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

`addLifecycleListener, addPropertyChangeListener, authenticate, authenticate, authenticate, backgroundProcess, destroy, digest, Digest, findLifecycleListeners, getAllRolesMode, getContainer, getController, getDigest, getDigest, getDigestEncoding, getDomain, getObjectName, getPrincipal, getRealmPath, getRealmSuffix, getType, getValidate, hasMessageDigest, hasResourcePermission, hasRole, hasUserDataPermission, init, main, postDeregister, postRegister, preDeregister, preRegister, removeLifecycleListener, removePropertyChangeListener, setAllRolesMode, setContainer, setController, setDigest, setDigestEncoding, setRealmPath, setValidate`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.apache.catalina.Realm
`addPropertyChangeListener, authenticate, authenticate, authenticate, authenticate, backgroundProcess, getContainer, getInfo, hasResourcePermission, hasRole, hasUserDataPermission, removePropertyChangeListener, setContainer`

Field Detail

### callbackHandler

    protected javax.security.auth.callback.CallbackHandler callbackHandler

  The callback handler responsible for answering our requests.

### committed

    protected boolean committed

  Has our own `commit()` returned successfully?

### options

    protected java.util.Map options

  The configuration information for this `LoginModule`.

### pathname

    protected java.lang.String pathname

  The absolute or relative pathname to the XML configuration file.

### principal

    protected java.security.Principal principal

  The `Principal` identified by our validation, or `null` if validation falied.

### principals

    protected java.util.HashMap principals

  The set of `Principals` loaded from our configuration file.

### sm

    protected static StringManager sm

  The string manager for this package.

### sharedState

    protected java.util.Map sharedState

  The state information that is shared with other configured `LoginModule` instances.

### subject

    protected javax.security.auth.Subject subject

  The subject for which we are performing authentication.

Constructor Detail

### JAASMemoryLoginModule

    public JAASMemoryLoginModule()

Method Detail

### abort

    public boolean abort()
                  throws javax.security.auth.login.LoginException

  Phase 2 of authenticating a `Subject` when Phase 1 fails. This method is called if the `LoginContext` failed somewhere in the overall authentication chain.

  Specified by:
    `abort` in interface `javax.security.auth.spi.LoginModule`
  Returns:
    `true` if this method succeeded, or `false` if this `LoginModule` should be ignored
  Throws:
    `javax.security.auth.login.LoginException` - if the abort fails

### commit

    public boolean commit()
                   throws javax.security.auth.login.LoginException

  Phase 2 of authenticating a `Subject` when Phase 1 was successful. This method is called if the `LoginContext` succeeded in the overall authentication chain.

  Specified by:
    `commit` in interface `javax.security.auth.spi.LoginModule`
  Returns:
    `true` if the authentication succeeded, or `false` if this `LoginModule` should be ignored
  Throws:
    `javax.security.auth.login.LoginException` - if the commit fails

### findSecurityConstraints

    public SecurityConstraint[] findSecurityConstraints(Request request,
                                                        Context context)

  Return the SecurityConstraints configured to guard the request URI for this request, or `null` if there is no such constraint.

  Specified by:
    `findSecurityConstraints` in interface `Realm`
  Overrides:
    `findSecurityConstraints` in class `RealmBase`
  Parameters:
    `request` - Request we are processing
    `context` - Context the Request is mapped to

### initialize

    public void initialize(javax.security.auth.Subject subject,
                           javax.security.auth.callback.CallbackHandler callbackHandler,
                           java.util.Map sharedState,
                           java.util.Map options)

  Initialize this `LoginModule` with the specified configuration information.

  Specified by:
    `initialize` in interface `javax.security.auth.spi.LoginModule`
  Parameters:
    `subject` - The `Subject` to be authenticated
    `callbackHandler` - A `CallbackHandler` for communicating with the end user as necessary
    `sharedState` - State information shared with other `LoginModule` instances
    `options` - Configuration information for this specific `LoginModule` instance

### login

    public boolean login()
                  throws javax.security.auth.login.LoginException

  Phase 1 of authenticating a `Subject`.

  Specified by:
    `login` in interface `javax.security.auth.spi.LoginModule`
  Returns:
    `true` if the authentication succeeded, or `false` if this `LoginModule` should be ignored
  Throws:
    `javax.security.auth.login.LoginException` - if the authentication fails

### logout

    public boolean logout()
                   throws javax.security.auth.login.LoginException

  Log out this user.

  Specified by:
    `logout` in interface `javax.security.auth.spi.LoginModule`
  Returns:
    `true` in all cases because thie `LoginModule` should not be ignored
  Throws:
    `javax.security.auth.login.LoginException` - if logging out failed

### load

    protected void load()

  Load the contents of our configuration file.

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.