AuthProvider (Java Platform SE 8 )
Keywords: java.security.AuthProvider class
Date: 2026-04-17

compact1, compact2, compact3
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 inherited from class java.security.Provider

      `Provider.Service`

  - ### Field Summary

    - ### Fields inherited from class java.util.Properties

      `defaults`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AuthProvider(String name, double version, String info)` Constructs a provider with the specified name, version number, and information.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and 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 inherited from class java.security.Provider

      `clear, compute, computeIfAbsent, computeIfPresent, elements, entrySet, forEach, get, getInfo, getName, getOrDefault, getProperty, getService, getServices, getVersion, keys, keySet, load, merge, put, putAll, putIfAbsent, putService, remove, remove, removeService, replace, replace, replaceAll, toString, values`

    - ### Methods inherited from class java.util.Properties

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

    - ### Methods inherited from class java.util.Hashtable

      `clone, contains, containsKey, containsValue, equals, hashCode, isEmpty, rehash, size`

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

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

- - ### Constructor Detail

    - #### AuthProvider

          protected AuthProvider(String name,
                                 double version,
                                 String info)

      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.

  - ### 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:
        `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:
        `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:
        `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

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.