Module java.base
Package java.security

## Class AuthProvider

- java.lang.Object
- - java.util.Dictionary<K,​V>
  - - 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 java.security.Provider

      `Provider.Service`

  - ### Field Summary

    - ### Fields declared in class java.util.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 java.security.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 java.util.Properties

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

    - ### Methods declared in class java.util.Hashtable

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

    - ### Methods declared in class java.lang.Object

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

- - ### Constructor Detail

    - #### 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 Detail

    - #### 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(java.lang.String)` has not been called
        `LoginException` - if the login operation fails
        `SecurityException` - if the caller does not pass a security check for `SecurityPermission("authProvider.name")`, where `name` is the value returned by this provider's `getName` method

    - #### logout

          public abstract void logout()
                               throws LoginException

      Log out from this provider.
      Throws:
        `IllegalStateException` - if the provider requires configuration and `Provider.configure(java.lang.String)` has not been called
        `LoginException` - if the logout operation fails
        `SecurityException` - if the caller does not pass a security check for `SecurityPermission("authProvider.name")`, where `name` is the value returned by this provider's `getName` method

    - #### 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(java.lang.String)` has not been called
        `SecurityException` - if the caller does not pass a security check for `SecurityPermission("authProvider.name")`, where `name` is the value returned by this provider's `getName` method