# Class Authenticator

java.lang.Object
com.sun.net.httpserver.Authenticator

Direct Known Subclasses:
  `BasicAuthenticator`

public abstract class Authenticator extends Object
Authenticator represents an implementation of an HTTP authentication mechanism. Sub-classes provide implementations of specific mechanisms such as Digest or Basic auth. Instances are invoked to provide verification of the authentication information provided in all incoming requests. Note. This implies that any caching of credentials or other authentication information must be done outside of this class.

Since:
  1.6

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`Authenticator.Failure`
Indicates an authentication failure.
`static class`
`Authenticator.Result`
Base class for return type from `authenticate(HttpExchange)` method.
`static class`
`Authenticator.Retry`
Indicates an authentication must be retried.
`static class`
`Authenticator.Success`
Indicates an authentication has succeeded and the authenticated user principal can be acquired by calling `Authenticator.Success.getPrincipal()`.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`Authenticator()`
Constructor for subclasses to call.

## Method Summary

Modifier and Type
Method
Description
`abstract Authenticator.Result`
`authenticate(HttpExchange exch)`
Called to authenticate each incoming request.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Authenticator

protected Authenticator()
Constructor for subclasses to call.

## Method Details

### authenticate

public abstract Authenticator.Result authenticate(HttpExchange exch)
Called to authenticate each incoming request. The implementation must return a `Authenticator.Failure`, `Authenticator.Success` or `Authenticator.Retry` object as appropriate:

- `Failure` means the authentication has completed, but has failed due to invalid credentials.
- `Success` means that the authentication has succeeded, and a `Principal` object representing the user can be retrieved by calling `Authenticator.Success.getPrincipal()`.
- `Retry` means that another HTTP exchange is required. Any response headers needing to be sent back to the client are set in the given `HttpExchange`. The response code to be returned must be provided in the `Retry` object. `Retry` may occur multiple times.

Parameters:
  `exch` - the `HttpExchange` upon which authenticate is called
Returns:
  the result