# Class AuthProvider

java.lang.Object
java.util.Dictionary<Object,Object>
java.util.Hashtable<Object,Object>
java.util.Properties
java.security.Provider
java.security.AuthProvider

All Implemented Interfaces:
  `Serializable, Cloneable, Map<Object,Object>`

public abstract class AuthProvider extends Provider
This class defines login and logout methods for a provider.

While callers may invoke `login` directly, the provider may also invoke `login` on behalf of callers if it determines that a login must be performed prior to certain operations.

Since:
  1.5
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class Provider

  `Provider.Service`

- ## Field Summary

  ### Fields declared in class Properties

  `defaults`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AuthProvider(String name, double version, String info)`
  Deprecated.
  use `AuthProvider(String, String, String)` instead.
  `protected`
  `AuthProvider(String name, String versionStr, String info)`
  Constructs a provider with the specified name, version string, and information.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `login(Subject subject, CallbackHandler handler)`
  Log in to this provider.
  `abstract void`
  `logout()`
  Log out from this provider.
  `abstract void`
  `setCallbackHandler(CallbackHandler handler)`
  Set a `CallbackHandler`.

  ### Methods declared in class Provider

  `clear, compute, computeIfAbsent, computeIfPresent, configure, entrySet, forEach, getInfo, getName, getOrDefault, getService, getServices, getVersion, getVersionStr, isConfigured, keySet, load, merge, put, putAll, putIfAbsent, putService, remove, remove, removeService, replace, replace, replaceAll, toString, values`

  ### Methods declared in class Properties

  `getProperty, getProperty, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, storeToXML, stringPropertyNames`

  ### Methods declared in class Hashtable

  `clone, contains, containsKey, containsValue, elements, equals, get, hashCode, isEmpty, keys, rehash, size`

  ### Methods declared in class Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### AuthProvider

    @Deprecated(since="9") protected AuthProvider(String name, double version, String info)
    Deprecated.
    use `AuthProvider(String, String, String)` instead.
    Constructs a provider with the specified name, version number, and information.
    Parameters:
      `name` - the provider name.
      `version` - the provider version number.
      `info` - a description of the provider and its services.

  - ### AuthProvider

    protected AuthProvider(String name, String versionStr, String info)
    Constructs a provider with the specified name, version string, and information.
    Parameters:
      `name` - the provider name.
      `versionStr` - the provider version string.
      `info` - a description of the provider and its services.
    Since:
      9

- ## Method Details

  - ### login

    public abstract void login(Subject subject, CallbackHandler handler) throws LoginException
    Log in to this provider.

    The provider relies on a `CallbackHandler` to obtain authentication information from the caller (a PIN, for example). If the caller passes a `null` handler to this method, the provider uses the handler set in the `setCallbackHandler` method. If no handler was set in that method, the provider queries the auth.login.defaultCallbackHandler security property for the fully qualified class name of a default handler implementation. If the security property is not set, the provider is assumed to have alternative means for obtaining authentication information.

    Parameters:
      `subject` - the `Subject` which may contain principals/credentials used for authentication, or may be populated with additional principals/credentials after successful authentication has completed. This parameter may be `null`.
      `handler` - the `CallbackHandler` used by this provider to obtain authentication information from the caller, which may be `null`
    Throws:
      `IllegalStateException` - if the provider requires configuration and `Provider.configure(String)` has not been called
      `LoginException` - if the login operation fails

  - ### logout

    public abstract void logout() throws LoginException
    Log out from this provider.
    Throws:
      `IllegalStateException` - if the provider requires configuration and `Provider.configure(String)` has not been called
      `LoginException` - if the logout operation fails

  - ### setCallbackHandler

    public abstract void setCallbackHandler(CallbackHandler handler)
    Set a `CallbackHandler`.

    The provider uses this handler if one is not passed to the `login` method. The provider also uses this handler if it invokes `login` on behalf of callers. In either case if a handler is not set via this method, the provider queries the auth.login.defaultCallbackHandler security property for the fully qualified class name of a default handler implementation. If the security property is not set, the provider is assumed to have alternative means for obtaining authentication information.

    Parameters:
      `handler` - a `CallbackHandler` for obtaining authentication information, which may be `null`
    Throws:
      `IllegalStateException` - if the provider requires configuration and `Provider.configure(String)` has not been called