public abstract class Authenticator extends Object
Applications use this class by overriding getPasswordAuthentication()
in a sub-class. This method will
typically use the various getXXX() accessor methods to get information
about the entity requesting authentication. It must then acquire a
username and password either by interacting with the user or through
some other non-interactive means. The credentials are then returned
as a PasswordAuthentication
return value.
An instance of this concrete sub-class is then registered
with the system by calling setDefault(Authenticator)
.
When authentication is required, the system will invoke one of the
requestPasswordAuthentication() methods which in turn will call the
getPasswordAuthentication() method of the registered object.
All methods that request authentication have a default implementation that fails.
- Since:
- 1.2
- See Also:
setDefault(java.net.Authenticator)
,getPasswordAuthentication()
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Authenticator.RequestorType
The type of the entity requesting authentication. -
Constructor Summary
Constructors Constructor Description Authenticator()
-
Method Summary
Modifier and Type Method Description static Authenticator
getDefault()
Gets the default authenticator.protected PasswordAuthentication
getPasswordAuthentication()
Called when password authorization is needed.protected String
getRequestingHost()
Gets thehostname
of the site or proxy requesting authentication, ornull
if not available.protected int
getRequestingPort()
Gets the port number for the requested connection.protected String
getRequestingPrompt()
Gets the prompt string given by the requestor.protected String
getRequestingProtocol()
Give the protocol that's requesting the connection.protected String
getRequestingScheme()
Gets the scheme of the requestor (the HTTP scheme for an HTTP firewall, for example).protected InetAddress
getRequestingSite()
Gets theInetAddress
of the site requesting authorization, ornull
if not available.protected URL
getRequestingURL()
Returns the URL that resulted in this request for authentication.protected Authenticator.RequestorType
getRequestorType()
Returns whether the requestor is a Proxy or a Server.static PasswordAuthentication
requestPasswordAuthentication(String host, InetAddress addr, int port, String protocol, String prompt, String scheme)
Ask the authenticator that has been registered with the system for a password.static PasswordAuthentication
requestPasswordAuthentication(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)
Ask the authenticator that has been registered with the system for a password.static PasswordAuthentication
requestPasswordAuthentication(Authenticator authenticator, String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)
Ask the givenauthenticator
for a password.static PasswordAuthentication
requestPasswordAuthentication(InetAddress addr, int port, String protocol, String prompt, String scheme)
Ask the authenticator that has been registered with the system for a password.PasswordAuthentication
requestPasswordAuthenticationInstance(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)
Ask this authenticator for a password.static void
setDefault(Authenticator a)
Sets the authenticator that will be used by the networking code when a proxy or an HTTP server asks for authentication.
-
Constructor Details
-
Authenticator
public Authenticator()
-
-
Method Details
-
setDefault
Sets the authenticator that will be used by the networking code when a proxy or an HTTP server asks for authentication.First, if there is a security manager, its
checkPermission
method is called with aNetPermission("setDefaultAuthenticator")
permission. This may result in a java.lang.SecurityException.- Parameters:
a
- The authenticator to be set. If a isnull
then any previously set authenticator is removed.- Throws:
SecurityException
- if a security manager exists and itscheckPermission
method doesn't allow setting the default authenticator.- See Also:
SecurityManager.checkPermission(java.security.Permission)
,NetPermission
-
getDefault
Gets the default authenticator. First, if there is a security manager, itscheckPermission
method is called with aNetPermission("requestPasswordAuthentication")
permission. This may result in a java.lang.SecurityException. Then the default authenticator, if set, is returned. Otherwise,null
is returned.- Returns:
- The default authenticator, if set,
null
otherwise. - Throws:
SecurityException
- if a security manager exists and itscheckPermission
method doesn't allow requesting password authentication.- Since:
- 9
- See Also:
SecurityManager.checkPermission(java.security.Permission)
,NetPermission
-
requestPasswordAuthentication
public static PasswordAuthentication requestPasswordAuthentication(InetAddress addr, int port, String protocol, String prompt, String scheme)Ask the authenticator that has been registered with the system for a password.First, if there is a security manager, its
checkPermission
method is called with aNetPermission("requestPasswordAuthentication")
permission. This may result in a java.lang.SecurityException.- Parameters:
addr
- The InetAddress of the site requesting authorization, or null if not known.port
- the port for the requested connectionprotocol
- The protocol that's requesting the connection (getRequestingProtocol()
)prompt
- A prompt string for the userscheme
- The authentication scheme- Returns:
- The username/password, or null if one can't be gotten.
- Throws:
SecurityException
- if a security manager exists and itscheckPermission
method doesn't allow the password authentication request.- See Also:
SecurityManager.checkPermission(java.security.Permission)
,NetPermission
-
requestPasswordAuthentication
public static PasswordAuthentication requestPasswordAuthentication(String host, InetAddress addr, int port, String protocol, String prompt, String scheme)Ask the authenticator that has been registered with the system for a password. This is the preferred method for requesting a password because the hostname can be provided in cases where the InetAddress is not available.First, if there is a security manager, its
checkPermission
method is called with aNetPermission("requestPasswordAuthentication")
permission. This may result in a java.lang.SecurityException.- Parameters:
host
- The hostname of the site requesting authentication.addr
- The InetAddress of the site requesting authentication, or null if not known.port
- the port for the requested connection.protocol
- The protocol that's requesting the connection (getRequestingProtocol()
)prompt
- A prompt string for the user which identifies the authentication realm.scheme
- The authentication scheme- Returns:
- The username/password, or null if one can't be gotten.
- Throws:
SecurityException
- if a security manager exists and itscheckPermission
method doesn't allow the password authentication request.- Since:
- 1.4
- See Also:
SecurityManager.checkPermission(java.security.Permission)
,NetPermission
-
requestPasswordAuthentication
public static PasswordAuthentication requestPasswordAuthentication(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)Ask the authenticator that has been registered with the system for a password.First, if there is a security manager, its
checkPermission
method is called with aNetPermission("requestPasswordAuthentication")
permission. This may result in a java.lang.SecurityException.- Parameters:
host
- The hostname of the site requesting authentication.addr
- The InetAddress of the site requesting authorization, or null if not known.port
- the port for the requested connectionprotocol
- The protocol that's requesting the connection (getRequestingProtocol()
)prompt
- A prompt string for the userscheme
- The authentication schemeurl
- The requesting URL that caused the authenticationreqType
- The type (server or proxy) of the entity requesting authentication.- Returns:
- The username/password, or null if one can't be gotten.
- Throws:
SecurityException
- if a security manager exists and itscheckPermission
method doesn't allow the password authentication request.- Since:
- 1.5
- See Also:
SecurityManager.checkPermission(java.security.Permission)
,NetPermission
-
requestPasswordAuthentication
public static PasswordAuthentication requestPasswordAuthentication(Authenticator authenticator, String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)Ask the givenauthenticator
for a password. If the givenauthenticator
is null, the authenticator, if any, that has been registered with the system usingsetDefault
is used.First, if there is a security manager, its
checkPermission
method is called with aNetPermission("requestPasswordAuthentication")
permission. This may result in a java.lang.SecurityException.- Parameters:
authenticator
- the authenticator, ornull
.host
- The hostname of the site requesting authentication.addr
- The InetAddress of the site requesting authorization, or null if not known.port
- the port for the requested connectionprotocol
- The protocol that's requesting the connection (getRequestingProtocol()
)prompt
- A prompt string for the userscheme
- The authentication schemeurl
- The requesting URL that caused the authenticationreqType
- The type (server or proxy) of the entity requesting authentication.- Returns:
- The username/password, or
null
if one can't be gotten. - Throws:
SecurityException
- if a security manager exists and itscheckPermission
method doesn't allow the password authentication request.- Since:
- 9
- See Also:
SecurityManager.checkPermission(java.security.Permission)
,NetPermission
-
requestPasswordAuthenticationInstance
public PasswordAuthentication requestPasswordAuthenticationInstance(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)Ask this authenticator for a password.- Parameters:
host
- The hostname of the site requesting authentication.addr
- The InetAddress of the site requesting authorization, or null if not known.port
- the port for the requested connectionprotocol
- The protocol that's requesting the connection (getRequestingProtocol()
)prompt
- A prompt string for the userscheme
- The authentication schemeurl
- The requesting URL that caused the authenticationreqType
- The type (server or proxy) of the entity requesting authentication.- Returns:
- The username/password, or null if one can't be gotten
- Since:
- 9
-
getRequestingHost
Gets thehostname
of the site or proxy requesting authentication, ornull
if not available.- Returns:
- the hostname of the connection requiring authentication, or null if it's not available.
- Since:
- 1.4
-
getRequestingSite
Gets theInetAddress
of the site requesting authorization, ornull
if not available.- Returns:
- the InetAddress of the site requesting authorization, or null if it's not available.
-
getRequestingPort
protected final int getRequestingPort()Gets the port number for the requested connection.- Returns:
- an
int
indicating the port for the requested connection.
-
getRequestingProtocol
Give the protocol that's requesting the connection. Often this will be based on a URL, but in a future JDK it could be, for example, "SOCKS" for a password-protected SOCKS5 firewall.- Returns:
- the protocol, optionally followed by "/version", where version is a version number.
- See Also:
URL.getProtocol()
-
getRequestingPrompt
Gets the prompt string given by the requestor.- Returns:
- the prompt string given by the requestor (realm for http requests)
-
getRequestingScheme
Gets the scheme of the requestor (the HTTP scheme for an HTTP firewall, for example).- Returns:
- the scheme of the requestor
-
getPasswordAuthentication
Called when password authorization is needed. Subclasses should override the default implementation, which returns null.- Returns:
- The PasswordAuthentication collected from the user, or null if none is provided.
-
getRequestingURL
Returns the URL that resulted in this request for authentication.- Returns:
- the requesting URL
- Since:
- 1.5
-
getRequestorType
Returns whether the requestor is a Proxy or a Server.- Returns:
- the authentication type of the requestor
- Since:
- 1.5
-