org.apache.catalina.realm

## Class JAASCallbackHandler

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

- All Implemented Interfaces:
    CallbackHandler

      public class JAASCallbackHandler
      extends Object
      implements 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 and Description
    --- | ---
    `protected String` | `authMethod` The authentication method to be used.
    `protected String` | `cnonce` Client generated nonce.
    `protected String` | `md5a2` Second MD5 digest.
    `protected String` | `nc` Nonce count.
    `protected String` | `nonce` Server generated nonce.
    `protected String` | `password` The password to be authenticated with.
    `protected String` | `qop` Quality of protection applied to the message.
    `protected JAASRealm` | `realm` The associated `JAASRealm` instance.
    `protected String` | `realmName` Realm name.
    `protected static StringManager` | `sm` The string manager for this package.
    `protected String` | `username` The username to be authenticated with.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JAASCallbackHandler(JAASRealm realm, String username, String password)` Construct a callback handler configured with the specified values.
    `JAASCallbackHandler(JAASRealm realm, String username, String password, String nonce, String nc, String cnonce, String qop, String realmName, String md5a2, String authMethod)` Construct a callback handler for DIGEST authentication.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `handle(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 String password

      The password to be authenticated with.

    - #### realm

          protected final JAASRealm realm

      The associated `JAASRealm` instance.

    - #### username

          protected final String username

      The username to be authenticated with.

    - #### nonce

          protected final String nonce

      Server generated nonce.

    - #### nc

          protected final String nc

      Nonce count.

    - #### cnonce

          protected final String cnonce

      Client generated nonce.

    - #### qop

          protected final String qop

      Quality of protection applied to the message.

    - #### realmName

          protected final String realmName

      Realm name.

    - #### md5a2

          protected final String md5a2

      Second MD5 digest.

    - #### authMethod

          protected final String authMethod

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

  - ### Constructor Detail

    - #### JAASCallbackHandler

          public JAASCallbackHandler(JAASRealm realm,
                             String username,
                             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,
                             String username,
                             String password,
                             String nonce,
                             String nc,
                             String cnonce,
                             String qop,
                             String realmName,
                             String md5a2,
                             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
        `md5a2` - Second MD5 digest used to calculate the digest MD5(Method + ":" + uri)
        `authMethod` - The authentication method in use

  - ### Method Detail

    - #### handle

          public void handle(Callback[] callbacks)
                      throws IOException,
                             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 `CallbackHandler`
      Parameters:
        `callbacks` - The set of `Callback`s to be processed
      Throws:
        `IOException` - if an input/output error occurs
        `UnsupportedCallbackException` - if the login method requests an unsupported callback type

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