Package org.apache.catalina.realm

## Class JAASCallbackHandler

- java.lang.Object
- - org.apache.catalina.realm.JAASCallbackHandler

All Implemented Interfaces:
  `javax.security.auth.callback.CallbackHandler`

    public class JAASCallbackHandler
    extends java.lang.Object
    implements javax.security.auth.callback.CallbackHandler

Implementation of the JAAS `CallbackHandler` interface, used to negotiate delivery of the username and credentials that were specified to our constructor. No interaction with the user is required (or possible).

This `CallbackHandler` will pre-digest the supplied password, if required by the `<Realm>` element in `server.xml`.

At present, `JAASCallbackHandler` knows how to handle callbacks of type `javax.security.auth.callback.NameCallback` and `javax.security.auth.callback.PasswordCallback`.

Author:
  Craig R. McClanahan, Andrew R. Jaquith

### Field Summary

Fields
`protected java.lang.String` `authMethod` The authentication method to be used.
`protected java.lang.String` `cnonce` Client generated nonce.
`protected java.lang.String` `digestA2` Second digest.
`protected java.lang.String` `nc` Nonce count.
`protected java.lang.String` `nonce` Server generated nonce.
`protected java.lang.String` `password` The password to be authenticated with.
`protected java.lang.String` `qop` Quality of protection applied to the message.
`protected JAASRealm` `realm` The associated `JAASRealm` instance.
`protected java.lang.String` `realmName` Realm name.
`protected static StringManager` `sm` The string manager for this package.
`protected java.lang.String` `username` The username to be authenticated with.

### Constructor Summary

Constructors
`JAASCallbackHandler​(JAASRealm realm, java.lang.String username, java.lang.String password)` Construct a callback handler configured with the specified values.
`JAASCallbackHandler​(JAASRealm realm, java.lang.String username, java.lang.String password, java.lang.String nonce, java.lang.String nc, java.lang.String cnonce, java.lang.String qop, java.lang.String realmName, java.lang.String digestA2, java.lang.String algorithm, java.lang.String authMethod)` Construct a callback handler for DIGEST authentication.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `handle​(javax.security.auth.callback.Callback[] callbacks)` Retrieve the information requested in the provided `Callbacks`.

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

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

### Field Detail

#### sm

    protected static final StringManager sm

The string manager for this package.

#### password

    protected final java.lang.String password

The password to be authenticated with.

#### realm

    protected final JAASRealm realm

The associated `JAASRealm` instance.

#### username

    protected final java.lang.String username

The username to be authenticated with.

#### nonce

    protected final java.lang.String nonce

Server generated nonce.

#### nc

    protected final java.lang.String nc

Nonce count.

#### cnonce

    protected final java.lang.String cnonce

Client generated nonce.

#### qop

    protected final java.lang.String qop

Quality of protection applied to the message.

#### realmName

    protected final java.lang.String realmName

Realm name.

#### digestA2

    protected final java.lang.String digestA2

Second digest.

#### authMethod

    protected final java.lang.String authMethod

The authentication method to be used. If null, assume BASIC/FORM.

### Constructor Detail

#### JAASCallbackHandler

    public JAASCallbackHandler​(JAASRealm realm,
                               java.lang.String username,
                               java.lang.String password)

Construct a callback handler configured with the specified values. Note that if the `JAASRealm` instance specifies digested passwords, the `password` parameter will be pre-digested here.

Parameters:
  `realm` - Our associated JAASRealm instance
  `username` - Username to be authenticated with
  `password` - Password to be authenticated with

#### JAASCallbackHandler

    public JAASCallbackHandler​(JAASRealm realm,
                               java.lang.String username,
                               java.lang.String password,
                               java.lang.String nonce,
                               java.lang.String nc,
                               java.lang.String cnonce,
                               java.lang.String qop,
                               java.lang.String realmName,
                               java.lang.String digestA2,
                               java.lang.String algorithm,
                               java.lang.String authMethod)

Construct a callback handler for DIGEST authentication.

Parameters:
  `realm` - Our associated JAASRealm instance
  `username` - Username to be authenticated with
  `password` - Password to be authenticated with
  `nonce` - Server generated nonce
  `nc` - Nonce count
  `cnonce` - Client generated nonce
  `qop` - Quality of protection applied to the message
  `realmName` - Realm name
  `digestA2` - Second digest calculated as digest(Method + ":" + uri)
  `algorithm` - The digest algorithm to use
  `authMethod` - The authentication method in use

### Method Detail

#### handle

    public void handle​(javax.security.auth.callback.Callback[] callbacks)
                throws java.io.IOException,
                       javax.security.auth.callback.UnsupportedCallbackException

Retrieve the information requested in the provided `Callbacks`. This implementation only recognizes `NameCallback`, `PasswordCallback` and `TextInputCallback`. `TextInputCallback` is used to pass the various additional parameters required for DIGEST authentication.

Specified by:
  `handle` in interface `javax.security.auth.callback.CallbackHandler`
Parameters:
  `callbacks` - The set of `Callback`s to be processed
Throws:
  `java.io.IOException` - if an input/output error occurs
  `javax.security.auth.callback.UnsupportedCallbackException` - if the login method requests an unsupported callback type