java.net

接口
异常
java.lang.Object
  继承者 java.net.Authenticator

public abstract class Authenticator
     
extends Object

Authenticator 类表示懂得如何获得网络连接验证的对象。通常,它通过提示用户输入信息来完成此操作。

应用程序通过重写子类中的 getPasswordAuthentication() 使用此类。此方法通常使用各种 getXXX() 访问器方法获取关于请求验证的实体的信息。然后,它必须通过与用户交互或者某些其他非交互手段获取用户名和密码。之后凭据将以 PasswordAuthentication 返回值的形式返回。

接下来通过调用 setDefault(Authenticator) 向系统注册此具体子类的实例。需要进行验证时,系统将调用其中一个 requestPasswordAuthentication() 方法,这些方法将依次调用注册对象的 getPasswordAuthentication() 方法。

请求验证的所有方法都有一个失败的默认实现。

从以下版本开始:
1.2
另请参见:
setDefault(java.net.Authenticator), getPasswordAuthentication()

嵌套类摘要
static class Authenticator.RequestorType
          请求验证的实体的类型。
 
构造方法摘要
Authenticator()
           
 
方法摘要
protected  PasswordAuthentication getPasswordAuthentication()
          需要密码授权时调用。
protected  String getRequestingHost()
          获取请求验证的站点或代理的 hostname;如果不可用,则为 null
protected  int getRequestingPort()
          获取所请求的连接的端口号。
protected  String getRequestingPrompt()
          获取请求方给出的提示字符串。
protected  String getRequestingProtocol()
          给出正在请求连接的协议。
protected  String getRequestingScheme()
          获取请求方的方案(例如,HTTP 防火墙的 HTTP 方案)。
protected  InetAddress getRequestingSite()
          获取请求授权的站点的 InetAddress;如果不可用,则为 null
protected  URL getRequestingURL()
          返回导致请求验证的 URL。
protected  Authenticator.RequestorType getRequestorType()
          返回请求方是代理还是服务器。
static PasswordAuthentication requestPasswordAuthentication(InetAddress addr, int port, String protocol, String prompt, String scheme)
          要求已经向系统注册的 authenticator 提供密码。
static PasswordAuthentication requestPasswordAuthentication(String host, InetAddress addr, int port, String protocol, String prompt, String scheme)
          要求已经向系统注册的 authenticator 提供密码。
static PasswordAuthentication requestPasswordAuthentication(String host, InetAddress addr, int port, String protocol, String prompt, String scheme, URL url, Authenticator.RequestorType reqType)
          要求已经向系统注册的 authenticator 提供密码。
static void setDefault(Authenticator a)
          设置在代理或 HTTP 服务器请求验证时连网密码使用的 authenticator。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

Authenticator

public Authenticator()
方法详细信息

setDefault

public static void setDefault(Authenticator a)
设置在代理或 HTTP 服务器请求验证时连网密码使用的 authenticator。

首先,如果存在安全管理器,则在 NetPermission("setDefaultAuthenticator") 权限下调用 checkPermission 方法。这可能导致 java.lang.SecurityException。

参数:
a - 要设置的 authenticator。如果 a 为 null,则移除以前设置的所有 authenticator。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许设置默认 authenticator。
另请参见:
SecurityManager.checkPermission(java.security.Permission), NetPermission

requestPasswordAuthentication

public static PasswordAuthentication requestPasswordAuthentication(InetAddress addr,
                                                                   int port,
                                                                   String protocol,
                                                                   String prompt,
                                                                   String scheme)
要求已经向系统注册的 authenticator 提供密码。

首先,如果存在安全管理器,则在 NetPermission("requestPasswordAuthentication") 权限下调用 checkPermission 方法。这可能导致 java.lang.SecurityException。

参数:
addr - 请求授权的站点的 InetAddress;如果未知则为 null。
port - 所请求的连接的端口
protocol - 正在请求连接的协议 ( getRequestingProtocol())
prompt - 用户的提示字符串
scheme - 验证方案
返回:
用户名/密码;或者无法得到,则返回 null。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许密码验证请求。
另请参见:
SecurityManager.checkPermission(java.security.Permission), NetPermission

requestPasswordAuthentication

public static PasswordAuthentication requestPasswordAuthentication(String host,
                                                                   InetAddress addr,
                                                                   int port,
                                                                   String protocol,
                                                                   String prompt,
                                                                   String scheme)
要求已经向系统注册的 authenticator 提供密码。此方法为请求密码的首选方法,因为在InetAddress 不可用时可以提供主机名。

首先,如果存在安全管理器,则在 NetPermission("requestPasswordAuthentication") 权限下调用 checkPermission 方法。这可能导致 java.lang.SecurityException。

参数:
host - 请求验证的站点的主机名。
addr - 请求授权的站点的 InetAddress;如果未知则为 null。
port - 所请求的连接的端口。
protocol - 请求连接的协议 ( getRequestingProtocol())
prompt - 标识验证域 (authentication realm) 的用户的提示字符串。
scheme - 验证方案
返回:
用户名/密码;或者无法得到,则返回 null。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许密码验证请求。
从以下版本开始:
1.4
另请参见:
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)
要求已经向系统注册的 authenticator 提供密码。

首先,如果存在安全管理器,则在 NetPermission("requestPasswordAuthentication") 权限下调用 checkPermission 方法。这可能导致 java.lang.SecurityException。

参数:
host - 请求验证的站点的主机名。
addr - 请求授权的站点的 InetAddress;或者未知则为 null。
port - 所请求的连接的端口
protocol - 请求连接的协议 ( getRequestingProtocol())
prompt - 用户的提示字符串
scheme - 验证方案
url - 导致验证的请求 URL
reqType - 请求验证的实体的类型(服务器或代理)。
返回:
用户名/密码;或者无法得到,则返回 null。
抛出:
SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许密码验证请求。
从以下版本开始:
1.5
另请参见:
SecurityManager.checkPermission(java.security.Permission), NetPermission

getRequestingHost

protected final String getRequestingHost()
获取请求验证的站点或代理的 hostname;如果不可用,则为 null

返回:
需要验证的连接的主机名;如果不可用,则返回 null。
从以下版本开始:
1.4

getRequestingSite

protected final InetAddress getRequestingSite()
获取请求授权的站点的 InetAddress;如果不可用,则为 null

返回:
请求授权的站点的 InetAddress;如果不可用,则返回 null。

getRequestingPort

protected final int getRequestingPort()
获取所请求的连接的端口号。

返回:
指示所请求连接的端口的 int

getRequestingProtocol

protected final String getRequestingProtocol()
给出正在请求连接的协议。此协议往往基于 URL,但在以后的 JDK 中,它可能是(举例来说)用于密码保护的 SOCKS5 防火墙的 "SOCKS"。

返回:
协议,可以选择是否后跟 "/version",其中 version 指的是版本号。
另请参见:
URL.getProtocol()

getRequestingPrompt

protected final String getRequestingPrompt()
获取请求方给出的提示字符串。

返回:
请求方给出的提示字符串(对于 http 请求就是验证域)

getRequestingScheme

protected final String getRequestingScheme()
获取请求方的方案(例如,HTTP 防火墙的 HTTP 方案)。

返回:
请求方的方案

getPasswordAuthentication

protected PasswordAuthentication getPasswordAuthentication()
需要密码授权时调用。子类应该重写默认实现,默认实现返回 null。

返回:
从用户收集的 PasswordAuthentication;如果一个也没有提供,则返回 null。

getRequestingURL

protected URL getRequestingURL()
返回导致请求验证的 URL。

返回:
请求 URL
从以下版本开始:
1.5

getRequestorType

protected Authenticator.RequestorType getRequestorType()
返回请求方是代理还是服务器。

返回:
请求方的验证类型
从以下版本开始:
1.5