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
    Modifier and Type | Field | Description
    --- | --- | ---
    `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
    Constructor | Description
    --- | ---
    `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
    Modifier and Type | Method | Description
    --- | --- | ---
    `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