# 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